一、修改字典
通过直接赋值法,给定具体的键和值。
>>>spam = {'color':'red','age':[18,24]}
>>>spam['sex'] = 'male'
>>>spam
{'age': [18, 24], 'color': 'red', 'sex': 'male'}
通过update(dic2)方法,将dict2的键-值对更新到字典中。
>>>spam = {'color':'red','age':[18,24]}
>>>spam2 = {'sex':'male'}
>>>spam.update(spam2)
>>>spam
{'age': [18, 24], 'color': 'red', 'sex': 'male'}
通过fromkeys(seq[,value])方法,创建一个新的字典,以seq的值为键,以value为值,默认为none。
>>>seq = ('color','age')
>>>spam = dict.fromkeys(seq,0)
>>>spam
{'age': 0, 'color': 0}
>>>spam = dict.fromkeys(seq)
>>>spam
{'age': None, 'color': None}
二、查找字典
通过get(key, default = None)方法,返回给定key中的值,如果key不存在,则返回default值。
>>>spam = {'color':'red','age':[18,24]}
>>>spam.get('color')
'red'
>>>spam.get('name')
>>>spam.get('name','Alice')
'Alice'
通过setdefault(key, default = None)方法,返回给定key中的值,如果值不存在,就会创建一个键-值对,值为default参数。
>>>spam = {'color':'red','age':[18,24]}
>>>spam.setdefault('color')
'red'
>>>spam.setdefault('name')
>>>spam
{'age': [18, 24], 'color': 'red', 'name': None}
>>>spam.setdefault('sex','male')
'male'
>>>spam
{'age': [18, 24], 'color': 'red', 'name': None, 'sex': 'male'}
三、访问字典的值
通过keys()方法,返回字典中所有的键,可用于循环。
通过values()方法,返回字典中所有的值,可用于循环。
通过items()方法,返回字典中所有的键-值对(元组形式,可分别赋值),可用于循环。
>>>spam = {'color':'red','age':[18,24]}
>>>spam.keys()
dict_keys(['color', 'age'])
>>>spam.values()
dict_values(['red', [18, 24]])
>>>spam.items()
dict_items([('color', 'red'), ('age', [18, 24])])
>>>for k, v in spam.items():
print('Key:' + k + ' Value:' + str(v))
Key:color Value:red
Key:age Value:[18, 24]
键或值返回的均不是列表,所以不能对进行列表操作。
检查字典中是否存在键或值。
>>>spam = {'color':'red','age':[18,24]}
>>>'age' in spam.keys()
True
>>>'black' not in spam.values()
True
>>>18 in spam.values()
False
四、字典删除
通过del 语句,可以删除给定键中字典的键值,如何不给定键,则删除整个字典。
>>>spam = {'color':'red','age':[18,24]}
>>>del spam['color']
>>>spam
{'age': [18, 24]}
>>>del spam
>>>spam
Traceback (most recent call last):
File "<ipython-input-72-cb31a703b96c>", line 1, in <module>
spam
NameError: name 'spam' is not defined
通过clear()方法,删除字典内的所有元素,但是该字典仍然存在。
>>>spam = {'color':'red','age':[18,24]}
>>>spam.clear()
>>>spam
{}
通过pop(key[,default])方法,删除给定key对应的值,并且返回删除的值。
>>>spam = {'color':'red','age':[18,24]}
>>>value = spam.pop('age')
>>>value
[18, 24]
>>>spam
{'color': 'red'}
通过popitem()方法,随机删除一个键-值对,并返回删除的值。
>>>spam = {'color':'red','age':[18,24]}
>>>spam.popitem()
('age', [18, 24])
>>>spam
{'color': 'red'}
五、字典复制
由于字典是可变类型,对传递一个字典仅仅只是传递一个引用。
浅拷贝对父级(一级目录)对象进行深拷贝,对子级(二级目录)对象不拷贝,仅引用。
深拷贝对父级和子级对象均拷贝。
>>>import copy
>>>spam = {'color':'red','age':[18,24]}>>>spam2 = spam #仅传递引用
>>>spam3 = spam.copy() #浅拷贝,父级对象不变,子级对象跟着spam的子级对象变换
>>>spam4 = copy.copy(spam) #浅拷贝>>>spam5 = copy.deepcopy(spam) #深拷贝,父级对象和子级对象均不会随着spam变换
>>>spam['color'] = 'black'
>>>spam['age'].remove(18)
>>>spam
{'age': [24], 'color': 'black'}
>>>spam2
{'age': [24], 'color': 'black'}
>>>spam3
{'age': [24], 'color': 'red'}
>>>spam4
{'age': [24], 'color': 'red'}
>>>spam5
{'age': [18, 24], 'color': 'red'}