- 映射:把唯一键映射到值上。字典存储键、值以及它们之间的关联
- value无顺序,可以是任何类型;key可以是任何不可变类型(数字/字符串/元组)
- item : key-value
常用操作
1.创建和访问
oldContancts=dict(contacts) #创建
contacts[key]# 访问值
#fromkeys()方法
>>> names=('a','b','c')
>>> age=(1,2,3)
>>> student=dict.fromkeys(names,age)
>>> student
{'a': (1, 2, 3), 'b': (1, 2, 3), 'c': (1, 2, 3)}
- get():匹配的键不存在时返回默认值,下标必须是字典中的合法键,keyError。
number=contacts.get(key,value)
#如果key不存在,返回value,即number=value
- keys()函数:返回字典中所有的标签 / values() / items()
>>> student
{'a': (1, 2, 3), 'b': (1, 2, 3), 'c': (1, 2, 3)}
>>> student.keys()
dict_keys(['a', 'b', 'c'])
2.增加和修改
- 字典属于可变容器,可以在创建之后改变内容。
- 修改给定键关联的值
contacts[key]=value
- update方法:合并字典
dict1={key1:value1}
dict2={key2:value2}
dict1.update(dict2)
- del():删除指定标签的数据项
- pop() :删除整个键值对,同时返回正在删除的项的值,可以使用它或者保存在一个变量中,如果键不在字典中,抛出keyError
Num=contacts.pop(key)
- popitem操作:删除并返回任意一个数据项,可用来遍历字典
- clear操作:清空字典
3.遍历字典
- ①使用for循环遍历字典中独立的键
for key in contacts:
print(key)
for key in contacts.keys():
print(key)
- ②同时得到键-值:items方法返回二元组
keys=[]
values=[]
for key,item in contacts.items()
keys.append(key)
values.append(value)
- 按顺序迭代键:sorted函数,返回由键组成的顺序列表
for key in sorted(contacts):
print(key,contacts[key])
- ③values方法返回字典值的序列
pNum=[]
for num in contancts.values():
pNum.append(num)
print(pNum)
>>>[123, 234, 345, 3455]
#使用list函数创建列表
phoneN=list(contancts.values())
print(phoneN)
>>>[123, 234, 345, 3455]
1.clear
>>> x={}
>>> y=x
>>> x['key']='value'
>>> x
{'key': 'value'}
>>> y
{'key': 'value'}
>>> x={} #将空字典赋给x,不影响y
>>> x
{}
>>> y
{'key': 'value'}
使用clear删除原来字典所有的元素
>>> x={'key':'value'}
>>> y=x
>>> y
{'key': 'value'}
>>> x.clear()
>>> y
{}
2.copy
浅复制
替换副本中的值时,原件不受影响。
修改副本中的值(就地修改),原件也将发生变化
深复制
使用模块copy中的函数deepcopy
from copy import deepcopy
d={}
d['name']=['Alice','Bobby','Candice']
c=d.copy()
dc=deepcopy(d)
d['name'].append('David')
print(c)
print(dc)
print(d)
{'name': ['Alice', 'Bobby', 'Candice', 'David']}
{'name': ['Alice', 'Bobby', 'Candice']}
{'name': ['Alice', 'Bobby', 'Candice', 'David']}
3.get
people={
'Alice':{
'phone':'2341',
'addr':'shuangfeng'
},
'Bobby':{
'phone':'3412',
'addr':'loudi'
},
'Candice':{
'phone':'3124',
'addr':'xinhua'
}
}
labels={
'phone':'phone number',
'addr':'address'
}
name=input('Name:')
request=input('Phone nunmbre(P) or Address(A)?')
if request == 'P':key='phone'
if request == 'A':key='addr'
person=people.get(name,{})
label=labels.get(key,key)
result=person.get(key,'not available')
print("{}'s {} is {}.".format(name,label,result))