字典是Python中唯一内建的映射类型,是作为可变的哈希表实现的,字典中的值储存在特定的键下,键可以是数字、字符串或元祖。
创建字典:
phonebook={ 'Alice' : 'earth' , 'Beth' : 9102 }
fdict=dict((['x',1],['y',2])) -> fdict={'y':2,'x':1}
ddict={}.fromkeys(('x','y'),-1) -> {'y':-1,'x':-1}
edict={}.fromkeys(('foo','bar')) -> {'foo':None,'bar':None}
删除操作:
del dict['name'] 删除键为name的项
dict.clear() 删除所有项
del dict 删除整个字典
dictl.pop('name') 删除并返回键为name的项
工厂函数:
dict()
dict(zip(('x','y'),(1,2))) -> {'y':2,'x':1}
dict([['x',1],['y',2]]) -> {'y':2,'x':1}
dict(x=1,y=2) -> {'y':2,'x':1}
dict8={'y':2,'x':1} dict9=dict(**dict8) -> dict9=dict8
由键-值对组成,键是唯一的,值不唯一.键重复时取最后一个。是一种无序的数据集
所有不可变的类型都是可哈希的,可哈希的类型都可以作为字典的键。
基本字典操作 | len(d) | 返回字典d中的键值对组合的数量 |
d[k] | 返回字典d中键k的值 | |
d[k]=v | 将值v关联到字典d中键k上 | |
del d[k] | 删除键为k的项 | |
k in d | 检查d中是否含有键为k的项 |
例子:
Peple={
'Alice':{
'phone':'2312',
'addr':'foo driver 23'
}
'Beth':{
'phone':'4453',
'addr':'baz vav'
}
访问里面的项目应该是people[name][key]
字典的格式化字符串:
phone {'Beth':'9102','Alice':'2321'}
"Alice's phone number is %(Alice)s." % phone
字典中的方法:
clear | d.clear() | 清除了字典d中的所有值 | 无返回值 |
copy | y=x.copy() | 浅复制 | |
deepcopy | dc=deepcopy(d) | 深复制 | |
fromkeys | {}.fromkeys(['name','age']) 返回{'age':None,'name':None} | 使用给定的键建立新的字典,每个键对应一个默认的None | |
get | d['name'] d.get('name') | 不存在会报错 不存在不会报错,返回None | |
has_key | d.has_key('name') | 是否含有特定的键,相当于k in d | 返回布尔值 |
items/iteritems | d.items() | 将字典中所有项以列表形式返回 | 返回键值对形式的列表 |
keys/iterkeys | 将字典中的键以列表形式返回 iterkeys返回针对键的迭代器 | ||
pop | d.pop('x') | 移出字典d中键为x的项 | 返回值为键x的值 |
popitem | d.popitem() | 返回字典d中随机项(键值),并从原字典中删除 | 返回随机元祖,一对键值 |
setdefault | d.setdefault('name1','aaa') | 查找键为name1的值,并返回键name1的值 若键name1不存在,则给d字典添加新的键值‘name1’:'aaa' | 返回键值 |
update | d.update(x) | 把字典x中的值更新到字典d上,若有相同的键则会进行覆盖 | 无返回值 |
values/itervalues | d.values() | 返回字典d中的值,不包含键,itervalues返回值的迭代器 | 以列表形式返回字典值 |
dict |
两个列表组合成一个字典:
>>> a = [1,2,3,4]
>>> d = ['fa','fb','fc','fd','fe']>>> dict(zip(a,d)){1: 'fa', 2: 'fb', 3: 'fc', 4: 'fd'}