鱼C论坛

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

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

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

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

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

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

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


用dict()来创建字典
创建一个空的字典:dict()
或者以某种对应关系创建一个字典:
例1
>>>dict1 =dict(([1,'人族'],[2,'星灵'],[3,'异虫']))
>>>dict1
{1: '人族', 2: '星灵', 3: '异虫'}
>>>dict1[2]
'星灵'

例2
>>>dict2 = dict(mk='山丘之王',dk='死亡骑士',tk='地精修补匠',dh='恶魔猎手')
>>>dict2
{'mk': '山丘之王', 'dk':'死亡骑士', 'tk': '地精修补匠', 'dh': '恶魔猎手'}
>>>dict2['dk']
'死亡骑士'


如果要在字典里替换某个key的值,这样做:dict[key]=你要赋的值,如果没有这个key则创建一个新的key
>>>dict2['dk'] = '阿尔萨斯'
>>>dict2
{'mk': '山丘之王', 'dk':'阿尔萨斯', 'tk': '地精修补匠', 'dh': '恶魔猎手'}
>>>dict2['nage'] = '娜迦'
>>> dict2
{'mk': '山丘之王', 'dk': '阿尔萨斯', 'tk':'地精修补匠', 'dh': '恶魔猎手', 'nage': '娜迦'}



字典的内置方法
D.fromkeys():语法:fromkeys(iterable,value=None) from builtins.type 创建一个新字典key从一个可迭代对象中读取,各项的value为你设置的值默认为空,如:
>>>dict.fromkeys(((1,2,3)))
{1: None, 2:None, 3: None}
>>>dict.fromkeys([1,2,3],'哈')
{1: '哈', 2: '哈', 3: '哈'}
D.keys():返回所有键,通常和for配套使用,如:
>>>dict1 = dict.fromkeys(range(10),'赞')
>>>dict1
{0: '赞', 1: '赞', 2: '赞', 3: '赞', 4: '赞', 5: '赞', 6: '赞', 7: '赞', 8: '赞', 9: '赞'}
>>>for eachkey in dict1.keys():
   print(eachkey)

   
0
1
2
3
4
5
6
7
8
9

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


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

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

(0, '赞')
(1, '赞')
(2, '赞')
(3, '赞')
(4, '赞')
(5, '赞')
(6, '赞')
(7, '赞')
(8, '赞')
(9, '赞')


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

成员资格操作符:利用in和not in可以确认某个key是否在字典里,不能查找value
D.claer()清空字典,移除字典里的所有项。这个和列表的clear是一样的。
D.pop():移除给定的key并返回它的value。如果不存在该key则返回设置的值,否则报错。如:
>>>dict1.pop(1)
'赞'
>>>dict1
{0: '赞', 2: '赞', 3: '赞', 4: '赞', 5: '赞', 6: '赞', 7: '赞', 8: '赞', 9: '赞'}
>>>dict1.pop(10)
Traceback(most recent call last):
  File "<pyshell#35>", line 1,in <module>
    dict1.pop(10)
KeyError: 10
>>>dict1.pop(10,'不存在')
'不存在'


D.popitem():移除并返回字典里的项:
>>>dict1
{0: '赞', 2: '赞', 3: '赞', 4: '赞', 5: '赞', 6: '赞', 7: '赞'}
>>>dict1.popitem()
(7, '赞')
>>>dict1
{0: '赞', 2: '赞', 3: '赞', 4: '赞', 5: '赞', 6: '赞'}


D.setdefault():创建一个新的项如果字典里没有的这项。
>>>dict1
{0: '赞', 2: '赞', 3: '赞', 4: '赞'}
>>>dict1.setdefault(10,'非常赞!')
'非常赞!'


D.update():用另一个字典来更新字典
>>>dict1
{0: '赞', 2: '赞', 3: '赞', 4: '赞', 10: '非常赞!'}
>>>dict2 = {'a':'吃饭了'}
>>>dict1.update(dict2)
>>>dict1
{0: '赞', 2: '赞', 3: '赞', 4: '赞', 10: '非常赞!', 'a': '吃饭了'}




评分

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

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 10:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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