字典⾥⾯的数据是以键值对形式出现,字典数据和数据顺序没有关系,即字典不⽀持下标,后期⽆论数据如何变化,只需要按照对应的键的名字查找数据即可。
1、创建字典的语法
- 符号为⼤括号
- 数据为键值对形式出现
- 各个键值对之间⽤逗号隔开
# 有数据字典
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
# 空字典
dict2 = {}
dict3 = dict()
2、字典常⻅操作
2.1 添加
写法:字典序列[key] = 值
注意:如果key存在则修改这个key对应的值;如果key不存在则新增此键值对。
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
dict1['name'] = 'Rose'
# 结果:{'name': 'Rose', 'age': 20, 'gender': '男'}
print(dict1)
dict1['id'] = 110
# {'name': 'Rose', 'age': 20, 'gender': '男', 'id': 110}
print(dict1)
2.2 删除
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
del dict1['gender'] # 【若删除的k不存在,则报错】
# 结果:{'name': 'Tom', 'age': 20}
print(dict1)
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
dict1.clear()
print(dict1) # {}
pop():删除字典中指定键所对应的值,并返回该值。
语法如下:
dict.pop(key[,default])
其中,key为要删除的键名,default为可选参数,表示如果字典中不存在指定键,则返回default的值。如果不指定default,则默认为None。
示例代码1:
letter = {
"A": "a",
"B": "b",
"C": "c"
}
pop_value = letter.pop('A')
print(pop_value)
print(letter)
运行结果:
示例代码2: 【字典中使用pop方法时必须传值】
letter = {
"A": "a",
"B": "b",
"C": "c"
}
pop_value = letter.pop() # 必须传值
print(pop_value)
print(letter)
运行结果:
示例代码3:【当删除的key不存在时会报错,需要传递default默认值】
letter = {
"A": "a",
"B": "b",
"C": "c"
}
pop_value = letter.pop("D")
print(pop_value)
print(letter)
运行结果:
示例代码4:
letter = {
"A": "a",
"B": "b",
"C": "c"
}
pop_value = letter.pop("D", 'd')
print(pop_value)
print(letter)
运行结果:
popitem():随机删除字典中的一个键值对(一般删除末尾键值对)并返回值。如果字典已经为空,却调用了此方法,就报出KeyError异常。
示例代码1:
letter = {
"A": "a",
"B": "b",
"C": "c"
}
pop_value = letter.popitem()
print(pop_value)
print(letter)
运行结果:
示例代码2:
letter = {}
pop_value = letter.popitem()
print(pop_value)
print(letter)
运行结果:
2.3 修改
2.4 查找
2.4.1 key值查找
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
print(dict1['name']) # Tom
print(dict1['id']) # 报错
2.4.2 get()
字典序列.get(key, 默认值)
注意:如果当前查找的key不存在则返回第⼆个参数(默认值),如果省略第⼆个参数,则返回 None。
示例代码1:
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
print(dict1.get('name')) # Tom
print(dict1.get('id', 110)) # 110
print(dict1.get('id')) # None
示例代码2: 【注意:此时运行会报错 TypeError: argument of type 'NoneType' is not iterable】
dic = {'name': 'Tom', 'age': 20, 'gender': '男'}
dic2 = {}
name = 'dgw'
if name not in dic.get('name'):
print(f"{name} not in dic!")
else:
print(f"{name} in dic!!!")
if name not in dic2.get('name'):
print(f"{name} not in dic2!")
else:
print(f"{name} in dic2!!!")
运行结果:
上述代码执行过程中,要注意字典查询为空的情况,为空时将会报错!所以写判断时首先要判断字典查询结果是否为空!如示例代码3所示。
示例代码3:
dic = {'name': 'Tom', 'age': 20, 'gender': '男'}
dic2 = {'name': 'Alice', 'age': 15}
name = 'dgw'
if name not in dic.get('name'):
print(f"{name} not in dic!")
else:
print(f"{name} in dic!!!")
if dic2.get('name') and name not in dic2.get('name'):
print(f"{name} not in dic2!")
print(type(dic2.get('name')))
print('程序执行结束!!!')
运行结果:
2.4.3 keys() 【查找字典中的所有key,返回可迭代的对象】
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
print(dict1.keys()) # dict_keys(['name', 'age', 'gender'])
2.4.4 values() 【查找字典中的所有value,返回可迭代的对象】
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
print(dict1.values()) # dict_values(['Tom', 20, '男'])
2.4.5 items() 【查找字典中的所有的键值对,返回可迭代的对象,里面的数据为元组】
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
print(dict1.items()) # dict_items([('name', 'Tom'), ('age', 20), ('gender','男')])
2.5 更新
update() 方法向字典插入指定的项目。 这个指定项目可以是字典或可迭代对象。
示例代码1:
letter1 = {
"A": "a",
"B": "b",
"C": "c"
}
letter2 = {
"X": "x",
"Y": "y",
"Z": "z"
}
letter1.update(letter2)
print(letter1)
运行结果:
示例代码2:
letter1 = {
"A": "a",
"B": "b",
"C": "c"
}
letter2 = {
"X": "x"
}
letter1.update(letter2)
print(letter1)
运行结果:
示例代码3:
letter1 = {
"A": "a",
"B": "b",
"C": "c"
}
letter2 = {
"X": "x",
"A": 'aa'
}
letter1.update(letter2)
print(letter1)
运行结果:
3、字典的循环遍历
3.1 遍历字典的key
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
for key in dict1.keys():
print(key)
3.2 遍历字典的value
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
for value in dict1.values():
print(value)
3.3 遍历字典的元素
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
for item in dict1.items():
print(item)
3.4 遍历字典的键值对
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
for key, value in dict1.items():
print(f'{key} = {value}')