【Excel VBA和Python对照学习】创建字典

article/2025/9/27 14:40:55

Excel VBA和Python双语对照学习

我们从小学习语文,都用过字典。查字典时可以从第一页开始,一页一页地往下找,直到找到为止。这样做明显效率低下,特别是字的位置比较靠后的时候。所以查字典时不这样做,而是根据目录直接跳到对应的页码查找关于字的解释。字典中要查的每个字是唯一的,每个字都有对应的解释说明。

字典中每个元素由一个键值对组成,其中键相当于真实字典中的字,它在整个字典中作为字条是唯一的;值相当于字的解释说明。Python中有字典数据类型,Excel VBA中则需要引外部库创建字典对象。

点这里看视频课程

【Excel VBA】
Excel VBA中没有字典数据类型,也无法直接创建字典对象,而需要通过引用第三方库创建字典对象并通过对该对象编程来实现字典相关的操作。
在Excel VBA中创建字典对象有前期绑定与后期绑定两种方式。
用后期绑定创建字典对象,首先创建一个Object类型的变量,然后用CreateObject函数创建字典对象并用该变量进行引用。使用类似下面的代码创建字典对象dicT。

Dim dicT As Object
Set dicT = CreateObject("Scripting.Dictionary")

然后就可以使用字典对象的属性和方法进行编程,比如向字典对象添加键值对。示例文件的存放路径为Samples\ch08\Excel VBA\创建字典.xlsm。

Sub Test()Dim dicT As ObjectSet dicT = CreateObject("Scripting.Dictionary")'向字典对象添加键值对dicT.Add "No001", "刘丹"dicT.Add "No002", "朱晓琳"dicT.Add "No003", "马忠"Debug.Print dicT.Count  '3,字典的长度,即键值对的个数
End Sub

用前期绑定创建字典对象,需要按照下面的步骤进行操作:
 在Excel主界面的“开发工具”功能面板中单击“Visual Basic”按钮,打开Excel的VBA开发环境。
 在“工具”菜单中单击”引用”选项,打开“引用”对话框,如图所示。
在这里插入图片描述
 在“可使用的引用”列表框中选择“Microsoft Scripting Runtime”核选框。
 单击“确定”按钮。
添加相关库的引用后,使用类似下面的代码创建字典对象dicT。

Dim dicT As Scripting.Dictionary
Set dicT=New Scripting.Dictionary

或者

Dim dicT As New Scripting.Dictionary

然后就可以使用字典对象的属性和方法进行编程,比如向字典对象添加键值对。示例文件的存放路径为Samples\ch08\Excel VBA\创建字典.xlsm。

Sub Test2()Dim dicT As Scripting.DictionarySet dicT = New Scripting.Dictionary'向字典对象添加键值对dicT.Add "No001", "刘丹"dicT.Add "No002", "朱晓琳"dicT.Add "No003", "马忠"Debug.Print dicT.Count  '3
End Sub

【Python】
Python中有字典数据类型。字典的键与值之间用冒号分隔,键值对之间用逗号分隔。整个字典用大括号({})包围。注意,在整个字典中,键必须是唯一的。
下面用{}创建字典:

>>> dt={}    #空字典
>>> dt
{}
>>> dt={'No001':'刘丹', 'No002':'朱晓琳', 'No003':'马忠'}
>>> dt
{'No001': '刘丹', 'No002': '朱晓琳', 'No003': '马忠'}
>>> len(dt)  #字典的长度
3

使用dict函数可以创建字典。该函数的参数,可以以key=value的形式连续传入键和值,也可以将其他可迭代对象转换为字典,或者zip函数生成zip对象,然后将zip对象转换为字典。
下面用key=value的形式输入键和值,并生成字典。

>>> dt=dict(grade=5, clas=2, id="s195201", name="LinXi")
>>> dt
{'grade': 5, 'clas': 2, 'id': 's195201', 'name': 'LinXi'}

下面用dict函数将其他可迭代对象转换为字典,其他可迭代对象包括列表、元组、集合等。

>>> dt=dict([("grade",5), ("clas",2), ("id","s195201"), ("name", "LinXi")])
>>> dt=dict((("grade",5), ("clas",2), ("id","s195201"), ("name", "LinXi")))
>>> dt=dict([["grade",5], ["clas",2], ["id","s195201"], ["name", "LinXi"]])
>>> dt=dict((["grade",5], ["clas",2], ["id","s195201"], ["name", "LinXi"]))
>>> dt=dict({("grade",5), ("clas",2), ("id","s195201"), ("name", "LinXi")})

这几种转换得到的结果均为:

>>> dt
{'grade': 5, 'clas': 2, 'id': 's195201', 'name': 'LinXi'}

使用zip函数可以利用两个给定的列表得到zip对象,然后用dict函数将该zip对象转换为字典。这适合于分别得到键和值序列,然后组装成字典的情况。

>>> k=["grade", "clas", "id", "name"]
>>> v=[5, 2, "s195201", "LinXi"]
>>> p=zip(k,v)
>>> dt=dict(p)
>>> dt
{'grade': 5, 'clas': 2, ' id': 's195201', 'name': 'LinXi'}

使用fromkeys方法可以创建值为空的字典,例如:

>>> dt=dict.fromkeys(["grade", "clas", "id", "name"])
>>> dt
{'grade': None, 'clas': None, ' id': None, 'name': None}

点这里看视频课程


http://chatgpt.dhexx.cn/article/EBVdaXVY.shtml

相关文章

vba中字典的用法

字典对象的方法有6个: Add 添加一条关键字与条目 Keys 返回所有关键字(形成1维数组) Items 返回所有条目(形成1维数组) Exists 关键字是否存在(TRUE/FALSE) Remove 移除关键字与对应的条目 RemoveAll 移除所有关键字与对应的条 注意: 字典对象的属性有4…

Excel VBA Dictionary excel vba 字典大全

Excel VBA Dictionary - A Complete Guide - Excel Macro Mastery A Quick Guide to the VBA Dictionary FunctionParamsEarly binding reference“Microsoft Scripting Runtime” (Add using Tools->References from the VB menu)Declare (early binding)Dim dict As Scr…

vba字典学习案例

一、案例概述: 本次案例主要讲解字典的学习和应用,通过使用字典的方式来将每一行不重复的数值进行汇总形成一个字符串,且将该字符串展示到指定单元格中。二、案例展示: (1)源数据: (…

VBA字典(dictionary)

这是我看到的最简单明了的Excel VBA字典(dictionary)的教程,把字典的应用,用短短几百字,全部道尽,简!但精彩!原文如下: 当年我(原作者:彭希仁)向LDY版主求教字典的时候,他…

在Excel VBA中使用字典

序言 VBA的基础数据类型里面并没有字典类型,但字典其实在很多应用场景中都很有用,那么如何在VBA中使用字典,本文就用几个例子和大家交流探讨一下。 场景1 某个医院每天都会从不同的制造商那里进三种材料中的一种,每天的进价都有…

VBA -[知识点]: 字典

VBA字典 记录一次VBA字典的使用部分代码 1. VBA 中创建一个字典对象2. 字典对象添加key 和 value3. 获取字典对象的key list4. 判断是否存在某个key5. 修改字典值6. 修改字典key 名称6. 删除某个item7. 删除所有item 记录一次VBA字典的使用 部分代码 Public Sub MainRun()1. …

VBA字典(详解,示例)

文章目录 创建字典对象字典的属性|方法案例去重求和计数匹配key的组合和分割字典value多字段累加字典求和和计数同时进行类似sql的join操作 创建字典对象 后期绑定:方便代码在其他电脑上运行,推荐。 dim dic as object Set dic CreateObject("scr…

JavaScript 动态生成表格

要求&#xff1a; HTML标签只写一行表头通过JS来写动态的表格&#xff08;有多少组数据&#xff0c;就自动创建多少行表格&#xff09;为学习和演示&#xff0c;采用固定的数据&#xff0c;不涉及调用后台数据 实现效果&#xff1a; 代码实现&#xff1a; <!DOCTYPE html…

利用JS代码完成动态生成表格案例及解析

思路&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&…

js自动生成html报表,JavaScript实现动态生成表格

本文实例为大家分享了JavaScript实现动态生成表格的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下 功能描述 在输入框中输入行和列&#xff0c;点击按钮&#xff0c;生成拥有对应行和列的表格。如下图所示&#xff1a; 分析 HTML界面设计 行&#xff1a; 列&#xf…

JavaScript 动态生成表格 及删除表格

创建 表格表头 <body> <table> <thead> <tr> <td>序号</td> <td>姓名</td> <td>性别</td> <td>年龄</td> <td>地址</td> <td>删除</td> </tr> </thead> <t…

js动态生成表格实例

效果图 代码 <!DOCTYPE html> <html> <body> <div><h1>动态生成表格</h1><div id"table1">行&#xff1a;<input type"text" id"h"/>列&#xff1a;<input type"text" id"…

在html中生成动态表格数据,JavaScript实现网页动态生成表格

JavaScript(JS)网页–动态生成表格,供大家参考,具体内容如下 在网页中,动态生成列表的内容,将数组中的object加入到列表中(没学到数据库)。在HTML中创建thead,然后通过JavaScipt动态生成tbody。并且在每行最后申城一个单元格,加入删除操作,点击删除可以删除此行。动态生…

使用JS动态生成表格

代码如下&#xff1a; <!DOCTYPE html> <html> <head><meta charset"utf-8" /><title></title><script>var bgColor;var list [{ id: 1, country: 中国, capital: 北京,},{ id: 2, country: 美国, capital: 纽约,},{ id…

html动态生成表格源码,JavaScript动态生成表格的示例

要求&#xff1a; HTML标签只写一行表头 通过JS来写动态的表格(有多少组数据&#xff0c;就自动创建多少行表格) 为学习和演示&#xff0c;采用固定的数据&#xff0c;不涉及调用后台数据 代码实现&#xff1a; HTML内容&#xff1a; 姓名科目成绩操作 CSS内容&#xff1a; tab…

利用javascript动态生成表格及注释

记录学习第一天 &#xff1a;关于javascript如何动态的生成表格 css样式想节省时间就没写,所以只有基本样式。 html部分&#xff1a; 创建一个表格&#xff08;table&#xff09;的头部&#xff08;thead&#xff09;和数据&#xff08;tbody&#xff09;标签。 <table b…

JavaScript网页——动态生成表格

1.创建学生数据 分析&#xff1a;因为里面的学生数据都是动态的&#xff0c;我们需要js动态生成。这里我们模拟数据&#xff0c;自己定义好数据。数据我们采取对象形式存储。 var students [{name:吕小布,subject:JavaScript,score:100,},{name:张益达,subject:JavaScript,…

JavaScript 动态生成表格 案例

功能描述 在输入框中输入行和列&#xff0c;点击按钮&#xff0c;生成拥有对应行和列的表格。如下图所示&#xff1a; 分析 HTML界面设计 <body>行&#xff1a;<input type"text" id"row" /> 列&#xff1a; <input type"text"…

javascript动态生成表格 -- 案例

js动态生成表格 Draven 效果预览html部分css部分js部分 表格内容使用js生成 效果预览 html部分 <table border"1px" cellspacing"0" cellpadding"10"><thead><tr style"background-color: #999999; height: 60px">…

JavaScript中动态生成表格

1. 以下这个案例比较典型&#xff1a; 涉及到dom节点的操作&#xff0c;以及数组和对象的遍历方法 题目要求&#xff1a; 使用数组把学生数据模拟出来。动态创建行、单元格。为单元格填充数据。提供“删除”链接&#xff0c;可删除所在的行。 效果如下&#xff1a; html代码…