无序,k-v对存在,查找速度快,占用内存高,key是唯一值,不能重复。
在python终端,使用dir(dict)
获取方法及属性列表,使用help(dict)
获取其使用方法
声明
:dict={}
声明并赋值
:dict={'key':'value','num':1,'list':[1,2],'tup':(1,2,3)}
dict['key'] = 'value'
:使用dict['key']=value的方式为字典重新赋值,或添加元素
d.pop('k')
: 删除字典指定的k,并且返回该k的值del d['k']
: 删除字典的指定kdel dict
: 删除整个字典
dict['k']
: 当dict不存在k时,抛出异常dict.get('k')
: 当dict不存在k时,返回None
- 获取keys列表:
dict.keys()
- 获取值列表 :
dict.values()
- 获取(k,v)元组列表:
dict.items()
- 获取以上列表的可迭代对象,需要使用
dict.iterkeys(); dict.itervalues(); dict.iteritems()
for k,v in dict.items():
print 'key:',k," -value:",v
- str 转 dict :
eval()
函数: 使用eval()
函数可以使字符串转为字典eval(str)
exec()
函数: 需要声明一个被赋值的变量
>>> s="{'k':1,'w':2}"
>>> d=None
>>> exec('d='+s)
>>> d
{'k': 1, 'w': 2}
>>> d['k']
1
>>>
- json模块:转换带特殊字符的字典
>>> s='[{"RepoDigests": null,"Created":1466711701,"Size":5042677,"VirtualSize":5042677,"Labels":null}]'
>>> import json
>>> print json.loads(s)
[{u'Labels': None, u'Size': 5042677, u'RepoDigests': None, u'VirtualSize': 5042677, u'Created': 1466711701}]
>>>
- dict 转 str :
str(dict)
keys=dict.keys()
for k in keys.sort():
print dict.get('k')
a={1:1}
b={2:2}
c= dict(a,**b) # 返回值为大字典
a.update(b) # 返回值为None,a为大字典
dic = {'a': 1, 'b': 2, 'c': 3}
lis = ['a', 'b']
print dict(zip(lis, map(lambda k: dic.get(k), lis)))
k = ['a', 'b', 'c']
v = [1, 2, 3]
print zip(k, v)
print dict(zip(k, v))
class E:
def __init__(self, k, v):
self.k = k
self.v = v
e1 = E('a', 1)
e2 = E('b', 2)
e3 = E('c', 3)
l = [e1, e2, e3]
print reduce(lambda o1, o2: dict(o1, **o2),
map(lambda e: {e.k: e.v}, l))