08 字典⚓︎
字典⚓︎
字典是一种无序、可修改(可变)的键值对(key: value)数据类型的集合。
创建字典⚓︎
要创建一个字典,我们使用花括号 {} 或内置函数 dict()。
# 语法
empty_dict = {}
# 带有数据值的字典
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
示例:
person = {
'first_name':'Asabeneh',
'last_name':'Yetayeh',
'age':250,
'country':'Finland',
'is_married':True,
'skills':['JavaScript', 'React', 'Node', 'MongoDB', 'Python'],
'address':{
'street':'Space street',
'zipcode':'02210'
}
}
上面的字典示例显示值可以是任何数据类型:字符串、布尔值、列表、元组、集合或字典。
字典长度⚓︎
它检查字典中的 'key: value' 对的数量。
# 语法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
print(len(dct)) # 4
示例:
person = {
'first_name':'Asabeneh',
'last_name':'Yetayeh',
'age':250,
'country':'Finland',
'is_married':True,
'skills':['JavaScript', 'React', 'Node', 'MongoDB', 'Python'],
'address':{
'street':'Space street',
'zipcode':'02210'
}
}
print(len(person)) # 7
访问字典项⚓︎
我们可以通过引用其键名来访问字典项。
# 语法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
print(dct['key1']) # value1
print(dct['key4']) # value4
示例:
person = {
'first_name':'Asabeneh',
'last_name':'Yetayeh',
'age':250,
'country':'Finland',
'is_married':True,
'skills':['JavaScript', 'React', 'Node', 'MongoDB', 'Python'],
'address':{
'street':'Space street',
'zipcode':'02210'
}
}
print(person['first_name']) # Asabeneh
print(person['country']) # Finland
print(person['skills']) # ['JavaScript', 'React', 'Node', 'MongoDB', 'Python']
print(person['skills'][0]) # JavaScript
print(person['address']['street']) # Space street
print(person['city']) # 错误
通过键名访问项会在键不存在时引发错误。为了避免这种错误,首先我们必须检查键是否存在,或者我们可以使用 get 方法。get 方法如果键不存在,则返回一个 None,这是一个 NoneType 对象数据类型。
person = {
'first_name':'Asabeneh',
'last_name':'Yetayeh',
'age':250,
'country':'Finland',
'is_married':True,
'skills':['JavaScript', 'React', 'Node', 'MongoDB', 'Python'],
'address':{
'street':'Space street',
'zipcode':'02210'
}
}
print(person.get('first_name')) # Asabeneh
print(person.get('country')) # Finland
print(person.get('skills')) #['HTML','CSS','JavaScript', 'React', 'Node', 'MongoDB', 'Python']
print(person.get('city')) # None
向字典中添加项⚓︎
我们可以向字典中添加新的键值对
# 语法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
dct['key5'] = 'value5'
示例:
person = {
'first_name':'Asabeneh',
'last_name':'Yetayeh',
'age':250,
'country':'Finland',
'is_married':True,
'skills':['JavaScript', 'React', 'Node', 'MongoDB', 'Python'],
'address':{
'street':'Space street',
'zipcode':'02210'
}
}
person['job_title'] = 'Instructor'
person['skills'].append('HTML')
print(person)
修改字典中的项⚓︎
我们可以修改字典中的项
# 语法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
dct['key1'] = 'value-one'
示例:
person = {
'first_name':'Asabeneh',
'last_name':'Yetayeh',
'age':250,
'country':'Finland',
'is_married':True,
'skills':['JavaScript', 'React', 'Node', 'MongoDB', 'Python'],
'address':{
'street':'Space street',
'zipcode':'02210'
}
}
person['first_name'] = 'Eyob'
person['age'] = 252
检查字典中的键⚓︎
我们使用 in 运算符来检查字典中是否存在键
# 语法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
print('key2' in dct) # True
print('key5' in dct) # False
从字典中删除键值对⚓︎
- pop(key): 移除具有指定键名的项
- popitem(): 移除最后一个项
- del: 移除具有指定键名的项
# 语法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
dct.pop('key1') # 移除 key1 项
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
dct.popitem() # 移除最后一项
del dct['key2'] # 移除 key2 项
示例:
person = {
'first_name':'Asabeneh',
'last_name':'Yetayeh',
'age':250,
'country':'Finland',
'is_married':True,
'skills':['JavaScript', 'React', 'Node', 'MongoDB', 'Python'],
'address':{
'street':'Space street',
'zipcode':'02210'
}
}
person.pop('first_name') # 移除 firstname 项
person.popitem() # 移除 address 项
del person['is_married'] # 移除 is_married 项
将字典转换为项的列表⚓︎
items() 方法将字典转换为项的元组列表。
# 语法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
print(dct.items()) # dict_items([('key1', 'value1'), ('key2', 'value2'), ('key3', 'value3'), ('key4', 'value4')])
清空字典⚓︎
如果我们不想要字典中的项,可以使用 clear() 方法将其清空
# 语法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
print(dct.clear()) # None
删除字典⚓︎
如果我们不使用字典,可以完全删除它
# 语法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
del dct
复制字典⚓︎
我们可以使用 copy() 方法复制一个字典。使用复制,我们可以避免修改原始字典。
# 语法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
dct_copy = dct.copy() # {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
将字典的键作为列表获取⚓︎
keys() 方法将字典的所有键作为列表返回。
# 语法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
keys = dct.keys()
print(keys) # dict_keys(['key1', 'key2', 'key3', 'key4'])
将字典的值作为列表获取⚓︎
values 方法将字典的所有值作为列表返回。
# 语法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
values = dct.values()
print(values) # dict_values(['value1', 'value2', 'value3', 'value4'])
💻 练习: 第8天⚓︎
- 创建一个名为 "dog" 的空字典。
- 向 "dog" 字典添加名字、颜色、品种、腿数和年龄等键值对。
- 创建一个名为 "student" 的字典,并添加 "first_name"、"last_name"、"gender"、"age"、"marital_status"、"skills"、"country"、"city" 和 "address" 作为键。
- 获取 "student" 字典的长度。
- 获取 "skills" 的值并检查其数据类型,应该是一个列表。
- 修改 "skills" 的值,添加一个或两个技能。
- 获取字典的键作为一个列表。
- 获取字典的值作为一个列表。
- 使用 items() 方法将字典变为一个元组列表。
- 删除字典中的一项。
- 删除一个字典。