鱼C论坛

 找回密码
 立即注册
查看: 1973|回复: 0

[技术交流] 章节六:字典

[复制链接]
发表于 2017-7-23 19:57:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 向西而笑 于 2017-8-28 20:20 编辑
字典和列表元组相似如容器一样可以放入很多种的东西,但字典是映射类型(python中只有这一种映射类型),列表元组是序列类型。序列使用数字索引值找到相关的对象,字典用键(key)对应的值(value)找到想找的东西。

创建和访问字典字典由key、value和大括号组成,要访问则字典名[key]
  1. >>>ad = {'小甲鱼':'爬行动物','老虎':'哺乳动物','太阳花':'植物'}
  2. >>>ad['老虎']
  3. '哺乳动物'
  4. >>>ad['小甲鱼']
  5. '爬行动物'
复制代码
创建一个空的字典可以用空的大括号表示


用dict()来创建字典
创建一个空的字典:dict()
或者以某种对应关系创建一个字典:
例1

  1. >>>dict1 =dict(([1,'人族'],[2,'星灵'],[3,'异虫']))
  2. >>>dict1
  3. {1: '人族', 2: '星灵', 3: '异虫'}
  4. >>>dict1[2]
  5. '星灵'
复制代码


例2

  1. >>>dict2 = dict(mk='山丘之王',dk='死亡骑士',tk='地精修补匠',dh='恶魔猎手')
  2. >>>dict2
  3. {'mk': '山丘之王', 'dk':'死亡骑士', 'tk': '地精修补匠', 'dh': '恶魔猎手'}
  4. >>>dict2['dk']
  5. '死亡骑士'
复制代码



如果要在字典里替换某个key的值,这样做:dict[key]=你要赋的值,如果没有这个key则创建一个新的key

  1. >>>dict2['dk'] = '阿尔萨斯'
  2. >>>dict2
  3. {'mk': '山丘之王', 'dk':'阿尔萨斯', 'tk': '地精修补匠', 'dh': '恶魔猎手'}
  4. >>>dict2['nage'] = '娜迦'
  5. >>> dict2
  6. {'mk': '山丘之王', 'dk': '阿尔萨斯', 'tk':'地精修补匠', 'dh': '恶魔猎手', 'nage': '娜迦'}
复制代码




字典的内置方法
D.fromkeys():语法:fromkeys(iterable,value=None) from builtins.type 创建一个新字典key从一个可迭代对象中读取,各项的value为你设置的值默认为空,如:
  1. >>>dict.fromkeys(((1,2,3)))
  2. {1: None, 2:None, 3: None}
  3. >>>dict.fromkeys([1,2,3],'哈')
  4. {1: '哈', 2: '哈', 3: '哈'}
复制代码

D.keys():返回所有键,通常和for配套使用,如:

  1. >>>dict1 = dict.fromkeys(range(10),'赞')
  2. >>>dict1
  3. {0: '赞', 1: '赞', 2: '赞', 3: '赞', 4: '赞', 5: '赞', 6: '赞', 7: '赞', 8: '赞', 9: '赞'}
  4. >>>for eachkey in dict1.keys():
  5.    print(eachkey)

  6.    
  7. 0
  8. 1
  9. 2
  10. 3
  11. 4
  12. 5
  13. 6
  14. 7
  15. 8
  16. 9

复制代码

D.value():用法和keys()一样返回所有value


D.items():用法依然一样,返回所有项,如:


  1. >>>for eachkey in dict1.items():
  2. print(eachkey)

  3. (0, '赞')
  4. (1, '赞')
  5. (2, '赞')
  6. (3, '赞')
  7. (4, '赞')
  8. (5, '赞')
  9. (6, '赞')
  10. (7, '赞')
  11. (8, '赞')
  12. (9, '赞')
复制代码



D.get():语法:get(key[,default])访问字典某个key的value,如果key不存在则返回一个指定的值(默认为空0),这样程序就不会直接报错停止运行。如:

  1. >>>dict1.get(9)
  2. '赞'
  3. >>>dict1.get(10)
  4. >>>dict1.get(10,'没有这个鬼东西')
  5. '没有这个鬼东西'
  6. >>>
复制代码


成员资格操作符:利用in和not in可以确认某个key是否在字典里,不能查找value
D.claer()清空字典,移除字典里的所有项。这个和列表的clear是一样的。
D.pop():移除给定的key并返回它的value。如果不存在该key则返回设置的值,否则报错。如:

  1. >>>dict1.pop(1)
  2. '赞'
  3. >>>dict1
  4. {0: '赞', 2: '赞', 3: '赞', 4: '赞', 5: '赞', 6: '赞', 7: '赞', 8: '赞', 9: '赞'}
  5. >>>dict1.pop(10)
  6. Traceback(most recent call last):
  7.   File "<pyshell#35>", line 1,in <module>
  8.     dict1.pop(10)
  9. KeyError: 10
  10. >>>dict1.pop(10,'不存在')
  11. '不存在'
复制代码



D.popitem():移除并返回字典里的项:

  1. >>>dict1
  2. {0: '赞', 2: '赞', 3: '赞', 4: '赞', 5: '赞', 6: '赞', 7: '赞'}
  3. >>>dict1.popitem()
  4. (7, '赞')
  5. >>>dict1
  6. {0: '赞', 2: '赞', 3: '赞', 4: '赞', 5: '赞', 6: '赞'}
复制代码



D.setdefault():创建一个新的项如果字典里没有的这项。

  1. >>>dict1
  2. {0: '赞', 2: '赞', 3: '赞', 4: '赞'}
  3. >>>dict1.setdefault(10,'非常赞!')
  4. '非常赞!'
复制代码



D.update():用另一个字典来更新字典

  1. >>>dict1
  2. {0: '赞', 2: '赞', 3: '赞', 4: '赞', 10: '非常赞!'}
  3. >>>dict2 = {'a':'吃饭了'}
  4. >>>dict1.update(dict2)
  5. >>>dict1
  6. {0: '赞', 2: '赞', 3: '赞', 4: '赞', 10: '非常赞!', 'a': '吃饭了'}
复制代码





评分

参与人数 1鱼币 +5 收起 理由
小甲鱼 + 5

查看全部评分

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-30 06:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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