字典和列表的区别 是无序的 ,字典的取值是通过Key值来达到的
>>> a = {'111':[1,2,3,4]}
>>> a{'111': [1, 2, 3, 4]}>>> for i in a: print i111 ###取出的值是键值 ‘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 i111222333>>>
删除
>>> 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 aFalse>>> ### 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 nnnnnn1 28 88555 ggg333 gagaga>>>
以下知道就行不建议使用-----------------------------------------------------------------------------------------
>>> for d,j in a.items():
print d,j9999 nnnnnn1 28 88555 ggg333 gagaga>>> ### 这种首先 让字典变成列表 然后通过列表去索引 但字典容量 上千万 那么转换过程就非常可怕了。。