字典的键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行。
删除字典元素

dict = {'Name': 'Fiona', 'Age': 10, 'Class': 'Three'}

# 删除键是'Name'的条目 
del dict['Name']  

# 删除整个字典元素
del dict

1.字典的方法

1.1 dict.clear()——清空字典

clear() 方法没有任何返回值,实例如下:

dict = {'Name': 'Fiona', 'Age': 10}

dict.clear()
print ("字典删除后长度 : %d" %  len(dict))

# 输出结果为:
字典删除后长度 : 0
1.2 dict.copy()——深拷贝,不会随原字典的修改而修改

赋值会随父对象的修改而修改,深拷贝不会随父对象的修改而修改,实例如下:

dict1 = {'user': 'runoob', 'num': [1, 2, 3]}

# 浅拷贝: 赋值,引用对象(即别名)
dict2 = dict1  
# 深拷贝:直接复制原字典
dict3 = dict1.copy()  

# 修改 data 数据
dict1['user'] = 'root'
dict1['num'].remove(1)

# 输出结果
print(dict1)
print(dict2)
print(dict3)
#以上结果输出如下:
{'user': 'root', 'num': [2, 3]}
{'user': 'root', 'num': [2, 3]}
{'user': 'runoob', 'num': [2, 3]}
1.3 dict.fromkeys(seq, value=None)——根据键、值列表创建字典

创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值。

  • seq – 字典键值列表。
  • value – 可选参数, 设置键序列(seq)对应的值,默认为 None。

实例如下:

#作为键的序列
seq = ('name', 'age', 'class')

# 不指定值
dict = dict.fromkeys(seq)#如果不指定value值默认为None
print("新的字典为 : %s" % str(dict))

# 赋值 10
dict = dict.fromkeys(seq, 10)
print("新的字典为 : %s" % str(dict))

# 赋值一个元组
dict = dict.fromkeys(seq,('zs',8,'Two'))
print("新的字典为 : %s" % str(dict))

#以上结果输出如下:
新的字典为 : {'name': None, 'age': None, 'class': None}
新的字典为 : {'name': 10, 'age': 10, 'class': 10}
新的字典为 : {'name': ('zs', 8, 'Two'), 'age': ('zs', 8, 'Two'), 'class': ('zs', 8, 'Two')}
1.4 dict.get(key, default=None)——查找指定键的值
  • key – 字典中要查找的键。
  • default – 如果值不在字典中返回default值

实例如下:

# get ()方法的应用举例
dict = {'Name': 'Mary', 'Age': 20}

print ("Age 值为 : %s" %  dict.get('Age'))
print ("Name 值为 : %s" %  dict.get('Name'))
print ("Sex 值为 : %s" %  dict.get('Sex', "NA"))
1.5 key in dict——判断字典是否存在某个键(也可用作遍历)

如果键在字典dict里返回true,否则返回false

1.6 dict.keys()——获取字典的键

返回一个迭代器,可以使用 list() 来转换为列表,列表为字典中的所有键。

dict = {'Name': 'Mary', 'Age': 17}
print(dict.keys())

#结果输出为:
dict_keys(['Name', 'Age'])
1.7 dict.values()——获取字典的值

返回一个迭代器,可以使用 list() 来转换为列表,列表为字典中的所有值。

dict = {'Name': 'Mary', 'Age': 17}
print("字典所有值为 : ", list(dict.values()))

#以上结果输出为:
字典所有值为 :  ['Mary', 17]
1.8 dict.items()——获取字典的(键, 值) 元组

返回一个迭代器,,可以使用 list() 来转换为列表,列表为字典中的所有(键, 值) 元组。

dict = {'Name': 'Mary', 'Age': 17}
 
print ("Value : %s" %  dict.items())

# 输出结果为:
Value : dict_items([('Age', 17), ('Name', 'Mary')])
1.9 dict.setdefault(key, default=None)

Python 字典 setdefault() 方法和 get() 方法类似, 如果 key 在 字典中,返回对应的值。如果不在字典中,则插入 key 及设置的默认值 default,并返回 default ,default 默认值为 None。

dict = {'Name': 'Mary', 'Age': 17}
 
print ("Age 键的值为 : %s" %  dict.setdefault('Age', None))
print ("Sex 键的值为 : %s" %  dict.setdefault('Sex', None))
print ("新字典为:", dict)

#以上结果输出为:
Age 键的值为 : 17
Sex 键的值为 : None
新字典为:{'Age': 17, 'Name': 'Mary', 'Sex': None}
1.10 dict.update(dict2)——更新字典

把字典参数 dict2 的 key/value(键/值) 对更新到字典 dict 里。
实例如下:

dict = {'Name': 'Mary', 'Age': 17}
dict2 = {'Sex': 'female' }

# 将 dict2 中的结果添加到字典 dict 中 
dict.update(dict2)
print ("更新字典 dict : ", dict)

#以上结果输出为:
更新字典 dict :  {'Name': 'Mary', 'Age': 17, 'Sex': 'female'}
1.11 dict.pop(key[,default])——删除指定键值,并返回值

Python 字典 pop() 方法删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。否则,返回default值。

  • key: 要删除的键值
  • default: 如果没有 key,返回 default 值
dict = {'Name': 'Mary', 'Age': 17}

result = dict.pop('Age') # 删除

print(result)
#以上结果输出为:
17
1.12 dict.popitem()——随机弹出一个键值对(key,value)
  • 遵守 LIFO(Last In First Out 后进先出法) 顺序规则,即先弹出最末尾的键值对。
  • 如果字典已经为空,却调用了此方法,就报出KeyError异常。
#实例:

dict = {'Name': 'Mary', 'Age': 17}
pop_obj=dict.popitem()
print(pop_obj)
print(dict)

#以上结果输出为:
('Age', 17)
{'Name': 'Mary'}
#将字典清空:
dict = {'Name': 'Mary', 'Age': 17}
del dict
print(dict.popitem())
#结果输出为:

Traceback (most recent call last):
  File "test.py", line 4, in <module>
    print(dict.popitem())
TypeError: descriptor 'popitem' of 'dict' object needs an argument