1、用字典的item属性修改字典的item,可读可写。语法为:字典.item(key)=''新item''下图代码,将孙悟空(key)的item(孙行者)用item属性改为''者行孙''。 添加字典数据,也可以使用''=''赋值,且''=''不会像Add方法那样遇到相同的key就出错。 这种方法可以理解为省略了 ''.item'' 。 d(''孙悟空'') = ''孙行者'' 等价于 d.Item(''孙悟空'') = ''孙行者'' 。 理解此句代码:字典里是没有''孙悟空''这个key的,直接使用字典的item属性就可以达到Add方法同样的结果且更好,语法为:字典.item(key)=''item''。 d.Item(''孙悟空'') = ''孙行者'' 就表示向字典里添加了key为''孙悟空'',item为''孙行者'' 的数据。简写为 d(''孙悟空'') = ''孙行者'' 。 不需要管字典里原先有木有''孙悟空''这个key,如果没有,字典的item属性就会自动新建一个key''孙悟空''。 所以,向字典里添加key和item,可以用item属性代替Add方法。 如果字典里已经有''孙悟空''这个key,再使用字典的item属性,那么就相当于直接修改''孙悟空''这个key对应的item。 上面的代码,d(''孙悟空'') = ''孙行者'' (不管原先有木有''孙悟空'')直接在字典中添加了key为''孙悟空'',item为''孙行者''的数据。 d(''孙悟空'') = ''行者孙'' 直接将key为''孙悟空''的item由''孙行者''修改为''行者孙'' 。
2、key属性修改字典的key字典的key属性,可写不可读,即只能通过此属性修改关键字,不能读取关键字。 上面代码将''孙悟空''修改为''孙猴子'',其对应的item不变。 3、注意问题:d(''孙悟空'')相当于用字典的item属性(.item省略)新建了一条key为''孙悟空'',item为空白的数据。上图,此时字典的数据条数为1,因为用key属性修改了''孙悟空''这个key,自然''孙悟空''就从字典了消失了。 下图时字典的数据条数为2,d(''孙悟空'')又添加了''孙悟空''这个key,item没指定就是默认空值。 所以,d(''孙悟空''),字典的item属性作用为:添加数据--修改数据--输出数据,十八般武器样样精通。 1、代替Add方法添加数据; 2、修改字典的item; 3、读取字典的item。 练习1:字典去重复,提取唯一值。利用字典的key不能重复的特性,提取唯一值。 练习2:计数,同样是上面的原始数据。理解计数:d(arr(i, 1)) = d(arr(i, 1)) 1 原始数据中,每个姓名的计数都为2。以''孙尚香''为例子。当代码运行至第一个孙尚香时: d(arr(i, 1)) = d(arr(i, 1)) 1,''=''右边的d(arr(i, 1))新建了key为孙尚香,item为空值的数据。 d(arr(i, 1)) = d(arr(i, 1)) 1相当于d(arr(i, 1)) = 空值 1,VBA自动运算, 变为d(arr(i, 1)) = 0 1 -->d(arr(i, 1)) = 1,然后将孙尚香作为字典的key,1作为孙尚香对应的item,存入字典。 当运行至第2个孙尚香时,d(arr(i, 1)) = d(arr(i, 1)) 1,''=''右边的d(arr(i, 1))就读取了孙尚香的item,此时为1。d(arr(i, 1)) = d(arr(i, 1)) 1等于d(arr(i, 1)) = 1 1-->d(arr(i, 1)) =2,然后相当于修改了孙尚香这个key对应的item,由1变为2,完成数量累计; 第三个孙尚香时,继续执行相同的操作(相当于不断修改同一个key对应的item),从而完成计数。 ...... 这和我们常用的(累加累计)一样的原理:i=i 1,如i为字典,不就是计数了,字典也可以是变量且更强大,容易读取。 练习3:求和,其原理和计数一样。 |
|