- 字典是一种无序的可变序列
- 字典可以存放任务类型对象,以键值对形式存放
- 字典中的键必须是唯一的,但是则不必
- 字典中的键必须是不可变的(可以是字符串,数字、元组等,列表不行)
- 空字典
dictionary ={} - 通过给定的键值对创建
dict1 = { 'abc': 456 }
dict2 = { 'abc': 123, 98.6: 37 }
- 通过dict对象的fromkeys()方法创建值为空的字典
dictionary = dict.fromkeys(list1)
参数说明:
dictionary:表示字典的名称
list1:作为字典的键的列表
list1=["张三","李四","王五"] dictionary = dict.fromkeys(list1) print(dictionary)
执行结果如下:
{'张三': None, '李四': None, '王五': None}
Process finished with exit code 0
- 通过映射函数创建字典
语法如下:
dictionary=dict(zip(list1,list2))
参数说明:
dictionary:表示字典的名称
zip()函数:用于将多个列表或元组对应位置的元素组合为元组,并返回包含这些内容的zip对象。如果想得到元组,可以将zip对象使用tuple()函数转换成元组;如果想得到列表,则可以使用list()函数将其转换成列表。
list1=["张三","李四","王五"] list2=[20,21,22] dictionary = dict(zip(list1,list2)) print(dictionary)
运行结果如下:
{'张三': 20, '李四': 21, '王五': 22}
Process finished with exit code 0
三、访问字典
- 通过指定的键得到对应的值
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print ("dict['Name']: ", dict['Name'])
print ("dict['Age']: ", dict['Age'])
运行结果如下:
dict['Name']: Runoob dict['Age']: 7 Process finished with exit code 0
- 如果指定的键不存在,则会抛出异常
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print ("dict['Alice']: ", dict['Alice'])
运行结果如下:
Traceback (most recent call last): File "E:/PC/untitled/练习/test.py", line 96, inprint("dict['Alice']: ", dict['Alice']) KeyError: 'Alice' Process finished with exit code 1
if判断避免该异常产生
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print("dict['Alice']: ", dict['Alice'] if 'Alice' in dict else '键不存在' )
结果如下:
dict['Alice']: 键不存在 Process finished with exit code 0
- 使用字典对象的get()方法获取指定键的值
语法如下:
dictionary.get(key,default)
key:为指定的键
default:可选项,当指定的键不存在是,返回的默认值,如果省略则返回None
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print("dict['Name']: ", dict.get('Name','键不存在'))
print("dict['Alice']: ", dict.get('Alice','键不存在'))
运行结果如下:
dict['Name']: Runoob dict['Alice']: 键不存在 Process finished with exit code 0四、添加、修改字典
- 添加新的键值对(如果键不存在,就是新增)
dict1={'A':'apple','B':'Book'}
dict1['C']='Cake'
print(dict1)
{'A': 'apple', 'B': 'Book', 'C': 'Cake'}
Process finished with exit code 0
- 更新键的值(如果键存在就是更新)
dict1={'A':'apple','B':'Book'}
dict1['A']='Ace'
print(dict1)
{'A': 'Ace', 'B': 'Book'}
Process finished with exit code 0
- 使用字典的update方法进行新增与更新
dict1={'A':'apple','B':'Book'}
dict1.update({'C':'Cake','B':'Bike'})
print(dict1)
运行结果如下:
{'A': 'apple', 'B': 'Bike', 'C': 'Cake'}
Process finished with exit code 0
五、字典的删除
- 删除字典中的键值对
dict1={'A':'apple','B':'Book','C':'CD'}
del dict1['A'],dict1['B']
print(dict1)
{'C': 'CD'}
Process finished with exit code 0
当删除一个不存在的键时,将会抛出异常,因此可以增加判断,防止异常抛出
dict1={'A':'apple','B':'Book','C':'CD'}
if "A" in dict1:
del dict1['A']
print(dict1)
{'B': 'Book', 'C': 'CD'}
Process finished with exit code 0
- 清空字典
dict1={} #重新赋值了一个新字典,内存中的地址发生了变化
dict1={'A':'apple','B':'Book','C':'CD'}
print("dict1的原内存地址",id(dict1))
dict1={} #重新赋值了一个新字典,内存中的地址发生了变化
print("dict1的新内存地址",id(dict1))
运行结果:
dict1的原内存地址 1983772618368
{}
dict1的新内存地址 1983772618432
Process finished with exit code 0
dict1.clear() #清空字典,内存中的地址不变
dict1={'A':'apple','B':'Book','C':'CD'}
print("dict1的原内存地址",id(dict1))
dict1.clear() #清空字典,内存中的地址不变
print(dict1)
print("dict1的内存地址",id(dict1))
运行结果:
dict1的原内存地址 2707112652480
{}
dict1的内存地址 2707112652480
Process finished with exit code 0
- 删除字典
del dictionary删除整个字典 - pop() 方法删除
语法如下:
pop(key[,default])
参数:
key: 要删除的键值
default: 如果没有 key,返回 default 值
返回值:
返回被删除的值。
dict1={'A':'apple','B':'Book','C':'CD'}
pop_obj = dict1.pop('A')
print(pop_obj)
运行如下:
apple Process finished with exit code 0
del 语句和 pop() 函数作用相同,pop() 函数有返回值。
6. popitem() 方法
popitem() 方法返回并删除字典中的最后一对键和值。
如果字典已经为空,却调用了此方法,就报出 KeyError 异常。
语法如下:
popitem()
参数:无
返回值:返回一个键值对(key,value)形式。
dict1={'A':'apple','B':'Book','C':'CD'}
pop_obj = dict1.popitem()
print(pop_obj)
print(dict1)
运行结果如下:
('C', 'CD')
{'A': 'apple', 'B': 'Book'}
Process finished with exit code 0
六、遍历字典
- 使用字典对象的items()方法获取字典的键值对元组列表
dict1={'A':'apple','B':'Book','C':'CD'}
for item in dict1.items():
print(item)
运行结果如下:
('A', 'apple')
('B', 'Book')
('C', 'CD')
Process finished with exit code 0
- 使用字典对象的items()方法获取具体的键和值
dict1={'A':'apple','B':'Book','C':'CD'}
for k,v in dict1.items():
print(k,v)
运行结果如下:
A apple B Book C CD Process finished with exit code 0
- 遍历字典中的键
dict1={'A':'apple','B':'Book','C':'CD'}
print(dict1.keys())
运行结果如下:
dict_keys(['A', 'B', 'C']) Process finished with exit code 0
dict1={'A':'apple','B':'Book','C':'CD'}
#dict_keys(['A', 'B', 'C'])称之为类列表,可以遍历,但不能用下标
for one in dict1.keys():
print(one)
#如果需要用下标,先将类列表转换为列表
# print(list(dict1.keys()))
- 遍历字典中的值
dict1={'A':'apple','B':'Book','C':'CD'}
print(dict1.values()) #类列表,可以遍历,但不能用下标
print(list(dict1.values()))
运行结果如下:
dict_values(['apple', 'Book', 'CD']) ['apple', 'Book', 'CD'] Process finished with exit code 0七、字典推导式
表现形式与列表推导式类型
import random
randomdict = {i:random.randint(10,100) for i in range(1,5)}
print(randomdict)
运行结果如下:
{1: 78, 2: 97, 3: 11, 4: 78}
Process finished with exit code 0
list1=["张三","李四","王五"]
list2=[20,21,22]
dictionary = {i:j for i,j in zip(list1,list2)}
print(dictionary)
运行结果如下:
{'张三': 20, '李四': 21, '王五': 22}
Process finished with exit code 0



