ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 彭希仁

[分享] 字典教程精简版(呼之即来、挥之即去)

    [复制链接]

TA的精华主题

TA的得分主题

发表于 2012-9-27 20:32 | 显示全部楼层
本帖已被收录到知识树中,索引项:数组集合和字典
的确不错,都是挺主要的。

TA的精华主题

TA的得分主题

发表于 2012-9-27 20:43 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-9-27 20:50 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-9-27 21:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
好,果然够精辟!

TA的精华主题

TA的得分主题

发表于 2012-9-27 21:51 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-9-27 21:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
呵呵……


那么,关于字典,我也来打个比方,挑战一下彭版主:


一、建立字典就是申请开五星级大酒店:
     Set d = CreateObject("Scripting.Dictionary")

   然后,这个酒店就可以拥有任意开房间让客人入住的能力。


二、 字典key就相当于房间的电子钥匙:

  每次有客人需要入住,就会在大堂登记,
  然后服务总台会按客人入住的先后顺序,
  分配一个空房间给新的客人住,
  并当场给这个新开的空房间配制一把唯一的、不重复的电子钥匙。

  这把钥匙的名字,可长可短,任服务总台定制。
  
  一般最为常见的是文本字符串,或数值用Cstr()转换,
  但是如果你愿意,连单元格区域等,都可以成为电子钥匙。


   在这里,我们不妨仍按照彭版主例子,暂且用人名做【钥匙】
   
   配钥匙的方法,即语法很简单,就是 d(key) 或写成中文就是 d(钥匙)
   
   但是要注意,配钥匙这个行为,必须和新开房间一起操作,操作内容如下:


三、配好钥匙以后,新开的房间就可以住人、放置物品,或者也可以不住任何人不放任何物品,留着空房间。
     但这一步必须做,在对这个新开房间进行【入住】、或【保留】空房间的过程完成以后,
     新配的钥匙才会有效。

     例如:  d("张三")=""       ……钥匙名="张三",房间保留为空
     或者:  d("张三")= 1        ……钥匙名="张三",房间里住进了数值型客人=1
     ………………

四、已经开出去的房间,只能用配制好的唯一的钥匙打开。

五、用已经配制好的唯一的钥匙打开房间以后,可以随意处置房间内的东西。

六、每次可以到大堂去问一下服务员,我手里拿着的这把钥匙,是否已经开过房间:
      d.Exists(钥匙)

七、如果我拿了一把钥匙去问大堂服务员找对应的房间,
      如果在已经开出去的房间中没有和这把钥匙对应的房间,
      或者说、这把钥匙打不开任何一间已经开出去的房间,
     则大堂服务员会马上帮我用这把新钥匙新开一个房间。
    d(newkey)=""     

八、可以到大堂去退房间,只要交还钥匙就可以了。
    d.Remove(key)

呵呵。   

点评

这个比喻真好,相同姓名的客人来入住,会把先前的人剔开,免费入住??  发表于 2012-9-29 17:26

评分

4

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-9-27 22:06 | 显示全部楼层
九、酒店临时关门,赶出所有客人,以便迎接贵宾:
    d.RemoveAll
   
十、酒店歇业……
   Set d = Nothing



…………

十一、 每个房间里可以任意处置,
    甚至可以再开一间小酒店(配钥匙的储物柜)……嵌套字典或 嵌套数组

  

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-9-27 22:19 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-9-27 22:24 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
总结:

一、字典(酒店业务)中,key(钥匙)是唯一的,不重复的。
二、字典key 可以以数组方式返回清单 (相当于大堂总台提供房间、钥匙信息数据)
三、key是按开房间的先后顺序压入堆栈的,不会自动排序(不管是升序还是逆序都没有)
      但是,有时候你可以投机取巧,让大家先把钥匙排好序以后,一个接着一个去开房间,
      这时候酒店里的钥匙就可以是按照你的顺序排序了的。
      (这个又一次反映了,酒店开房间配制钥匙只看先后顺序,不看钥匙本身是啥内容)

四、虽然钥匙不管顺序,但大堂有办法用最快的速度找到每把钥匙唯一对应的房间并打开让你使用……快速电梯。(据说是哈希算法?)

五、一旦钥匙已经用来开过房间,就不能再改了……能改的只是每个房间里的内容。(Item)

而这个对房间内容的操作,其实才是能够看出使用字典者算法功力的实质性问题。


六、只要你有房间钥匙,大堂其实根本不管你是谁哦你都有权利立即处置房间里的内容……
   (真的不管男女老幼,只看当前拿到钥匙的人是谁就可以哦、亲!)

    翻译成VBA的含义是,只要你用对了关键词,立即可以按你目前的身份去置换或调用对应Item,而不管这个Item以前是用哪个身份放置进去的内容。


其中一个典型的做法,就是去除重复项。

即,不管外面有几个、甚至几十、几百、几千个“人”,如果他们手里的钥匙相同,
则他们入住酒店都是共用同样的房间,大堂服务员不会帮拿同样钥匙的人每次都新开一个房间。

呵呵……

   



点评

群子一定要系统地搞一个东西出来,你的水平很高,但是散乱,函数很高、字典很高,等等,能不能通俗易懂地教材一下,可能就会挑战你的水平,这个主题,还是按彭版的思路来,不可乱了方寸。  发表于 2012-9-28 16:39

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-9-27 22:39 | 显示全部楼层
版主和群子讲得都很精彩,收藏学习,谢谢分享!~!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-22 06:34 , Processed in 0.032806 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表