字典⾥⾯的数据是以键值对形式出现,字典数据和数据顺序没有关系,即字典不⽀持下标,后期⽆论数据如何变化,只需要按照对应的键的名字查找数据即可。
1. 创建字典的语法
字典特点:
- 符号为⼤括号
- 数据为键值对形式出现
- 各个键值对之间⽤逗号隔开
# 有数据字典
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
# 空字典
dict2 = {}
dict3 = dict()
注意:⼀般称冒号前⾯的为键(key),简称k;冒号后⾯的为值(value),简称v。
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 删除
del() / del:
删除字典或删除字典中指定键值对。
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
del dict1['gender'] # 【若删除的k不存在,则报错】
# 结果:{'name': 'Tom', 'age': 20}
print(dict1)
clear():
清空字典,删除字典中所有的元素
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
dict1.clear()
print(dict1) # {}
pop():删除拥有指定键的元素
letter = {
"A": "a",
"B": "b",
"C": "c"
}
pop_value = letter.pop('A')
print(pop_value)
print(letter)
popitem():从字典中删除最后一个键值对
letter = {
"A": "a",
"B": "b",
"C": "c"
}
pop_value = letter.popitem()
print(pop_value)
print(letter)
写法:
字典序列
[key] =
值
注意:如果key存在则修改这个key对应的值 ;如果key不存在则新增此键值对。
2.4 查找
2.4.1 key值查找
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
print(dict1['name']) # Tom
print(dict1['id']) # 报错
如果当前查找的key存在,则返回对应的值;否则则报错。
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 = 'dgw'
if name not in dic.get('name'):
print(f"{name} not in dic!")
else:
print(f"{name} in dic!!!")
if dic2 and name not in dic2.get('name'):
print(f"{name} not in dic2!")
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() 方法向字典插入指定的项目。 这个指定项目可以是字典或可迭代对象。
letter1 = {
"A": "a",
"B": "b",
"C": "c"
}
letter2 = {
"X": "x",
"Y": "y",
"Z": "z"
}
letter1.update(letter2)
print(letter1)

dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
for key in dict1.keys():
print(key)

dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
for value in dict1.values():
print(value)

dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
for item in dict1.items():
print(item)
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
for key, value in dict1.items():
print(f'{key} = {value}')