博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
3 - 8 字典的使用
阅读量:5073 次
发布时间:2019-06-12

本文共 2684 字,大约阅读时间需要 8 分钟。

字典和列表的区别 是无序的 ,字典的取值是通过Key值来达到的  

>>> a = {'111':[1,2,3,4]}

>>> a
{'111': [1, 2, 3, 4]}
>>> for i in a:
print i       

111                   ###取出的值是键值 ‘111’

>>> a['111']
[1, 2, 3, 4]
>>> a['111'][0]           
1
>>> a['111'][2]
3
>>>                   


 

>>> a['111'][2] = 'ggg'

>>> a
{'111': [1, 2, 'ggg', 4]}
>>>                   ### 通过键值 下标来替换

 

>>> a['111'] = 'hehe'

>>> a
{'111': 'hehe'}
>>>   ### 一个键值对应 :后面的值 

 

>>> a['222'] = 'hahahah'

>>> a
{'111': 'hehe', '222': 'hahahah'}            ###当一个键值 不存在的时候 默认字典会增加其值  键值存在内容就会替换
>>> a['333'] = 'gagaga'
>>> a
{'111': 'hehe', '222': 'hahahah', '333': 'gagaga'}
>>> a
{'111': 'hehe', '222': 'hahahah', '333': 'gagaga'}
>>> print a
{'111': 'hehe', '222': 'hahahah', '333': 'gagaga'}
>>> for i in a:
print i

111
222
333
>>>


 

删除 

>>> del a['222']

>>> a
{'111': 'hehe', '333': 'gagaga'}
>>>        ### del 是python 内置的机构 通用型

 

>>> a.pop('111')

'hehe'
>>> a
{'333': 'gagaga'}
>>>                        ###pop()  里面输入需要删除的键值 不可不填写 字典本身是无序的 popitem()不填写键值就随意删了,不建议用


 

 

查找 

上面查找通过键值来 查询了  但是当键值不存在的时候 直接查找会报错。。

除非你很肯定你要找的键值就在字典里。

试探性搜索 用get()

>>> a

{'333': 'gagaga'}
>>> print a.get('555')
None
>>>   ### 当试探搜索没有的情况下会返回None 而不是报错毁坏程序

 

>>> a.has_key('555')

False                         ###在python 2.x里是有这个方法来检测键值是否存在  3.X里没有了
>>> '555' in a
False
>>>                        ### 3.x版本 可以用这种方式 结果是一样的


 

打印字典里的所有的值  ,,,键

>>> a

{'555': 'hahhaa', '9999': 'nnnnnn', '333': 'gagaga'}
>>>
>>>
>>> print a.values()
['hahhaa', 'nnnnnn', 'gagaga']
>>>
>>>                     values()  

 

>>> a.keys()

['555', '9999', '333']
>>>                     keys()


 

增加创建 

 当需要创建一个 字典时候  创建的键 已经存在, 那么不会被覆盖 而是增加

Python 字典 setdefault() 函数和类似, 如果键不存在于字典中,将会添加键并将值设为默认值

setdefault()


 

update()

>>> a

{'555': 'hahhaa', '9999': 'nnnnnn', '333': 'gagaga'}
>>>
>>> b = {'555':'ggg',1:2,8:88}
>>> a.update(b)
>>> print a
{'9999': 'nnnnnn', 1: 2, 8: 88, '555': 'ggg', '333': 'gagaga'}
>>>                          ## update(其他需要融合的字典)     当字典融合的话 键值相同的覆盖 新的键值 就增加

 


 

 坑   。。。。。。。。。。。。。。。。。。。。。。

>>> print a.items()

[('9999', 'nnnnnn'), (1, 2), (8, 88), ('555', 'ggg'), ('333', 'gagaga')]
>>>                    ###items()  直接把字典变成列表

 


 

 

>>> d = dict.fromkeys([1,2,3],[11,{'aa':'bb'},'c'])

>>> d
{1: [11, {'aa': 'bb'}, 'c'], 2: [11, {'aa': 'bb'}, 'c'], 3: [11, {'aa': 'bb'}, 'c']}
>>>                              ###fromkeys(['创建字典的键'],[‘创建字典的值’])  

>>> d[2][1]['aa'] = 'kkkkk'    ###多层嵌套字典中  是字典就按字典取值 是列表就按列表取值 各取所需

>>> d
{1: [11, {'aa': 'kkkkk'}, 'c'], 2: [11, {'aa': 'kkkkk'}, 'c'], 3: [11, {'aa': 'kkkkk'}, 'c']}
>>>                 ###当修改深层次的值 时候 这种就需要注意  所有值都会改变

  


 

 最好的 字典循环

>>> a

{'9999': 'nnnnnn', 1: 2, 8: 88, '555': 'ggg', '333': 'gagaga'}
>>>
>>>
>>>
>>>
>>> for i in a:
print i,a[i]

9999 nnnnnn
1 2
8 88
555 ggg
333 gagaga
>>>                       

 

以下知道就行不建议使用-----------------------------------------------------------------------------------------

 

>>> for d,j in a.items():

print d,j

9999 nnnnnn
1 2
8 88
555 ggg
333 gagaga
>>>   ###  这种首先  让字典变成列表 然后通过列表去索引 但字典容量 上千万 那么转换过程就非常可怕了。。

 

转载于:https://www.cnblogs.com/th-lyc/p/8529585.html

你可能感兴趣的文章
Linux基本操作
查看>>
osg ifc ifccolumn
查看>>
C++ STL partial_sort
查看>>
3.0.35 platform 设备资源和数据
查看>>
centos redis 安装过程,解决办法
查看>>
IOS小技巧整理
查看>>
WebDriverExtensionsByC#
查看>>
我眼中的技术地图
查看>>
lc 145. Binary Tree Postorder Traversal
查看>>
sublime 配置java运行环境
查看>>
在centos上开关tomcat
查看>>
重启rabbitmq服务
查看>>
正则表达式(进阶篇)
查看>>
无人值守安装linux系统
查看>>
【传道】中国首部淘宝卖家演讲公开课:农业本该如此
查看>>
jQuery应用 代码片段
查看>>
MVC+Servlet+mysql+jsp读取数据库信息
查看>>
黑马程序员——2 注释
查看>>
用OGRE1.74搭建游戏框架(三)--加入人物控制和场景
查看>>
转化课-计算机基础及上网过程
查看>>