3

字典和列表的区别 是无序的 ,字典的取值是通过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() 函数和get() 方法类似, 如果键不存在于字典中,将会添加键并将值设为默认值

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