Dict字典
字典是无序、可修改可变、成对(key:value)的数据类型集合。
创建字典
要创建一个dict类型,我们通过大括号{}或 内置函数方法 dict() 实现。
# 语法形式:空值
empty_dict = {}
# 语法形式:带初始值(键值对)
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
实践例子
person = {
'name':'MegaQi',
'age':100,
'country':'China',
'is_marred':True,
'skills':['JavaScript', 'React', 'Node', 'Java', 'Python'],
'address':{
'city':'上海',
'street':'万航渡路'
}
}
上面的例子中对应的值可以是任何数据类型,如:字符串、布尔值、列表、元组、集合或字典。
字典长度
使用len(dict)可以获得字典的长度,它计算的是一对 'key: value' 的数量。
# syntax
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
print(len(dct)) # 4
具体例子
person = {
'name':'MegaQi',
'age':100,
'country':'China',
'is_marred':True,
'skills':['JavaScript', 'React', 'Node', 'Java', 'Python'],
'address':{
'city':'上海',
'street':'万航渡路'
}
}
print(len(person)) # 6
字典访问
我们通过引用key的的方式获取dict键值对的值。形式为字典变量[key]
# 语法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
print(dct['key1']) # value1
print(dct['key4']) # value4
详细例子
person = {
'name':'MegaQi',
'age':100,
'country':'China',
'is_marred':True,
'skills':['JavaScript', 'React', 'Node', 'Java', 'Python'],
'address':{
'city':'上海',
'street':'万航渡路'
}
}
print(person['name']) # MegaQi
print(person['country']) # China
print(person['skills']) # ['JavaScript', 'React', 'Node', 'Java', 'Python']
print(person['skills'][0]) # JavaScript
print(person['address']['street']) # 万航渡路
print(person['school']) # KeyError: school
如果访问key不存在则会引发错误。为了避免这种错误,首先必须检查键是否存在,或者可以使用get方法。如果键不存在,get方法会返回None,表示是一个NoneType对象数据类型。
# 将上边的例子改成用get获取值
person = {
#...略...
}
print(person.get('name'))
print(person.get('country'))
print(person.get('skills'))
print(person.get('city')) # None
字典增改
增加dict项
通过引用赋值,可以向已存在的字典中增加新的key-value项。
# 语法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
dct['key5'] = 'value5'
修改dict项值
# 语法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
dct['key1'] = 'value-one'
检查、复制与转换
字典检查
要检查一个字典对是否存在,通过操作符in判断key是否在dict中包含。
# 语法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
print('key2' in dct) # True
print('key5' in dct) # False
# 例子
person = {
# ...同上...
}
print('city' in person) # True
print('school' in person) # Flase
字典拷贝
使用copy()方法复制字典。使用复制可以避免原字典的项在操作中变动。
# 语法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
dct_copy = dct.copy() # {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
# 例子
person = {
# ...同上...
}
copy_person = person.copy()
copy_person['city'] = '深圳'
print(person)
print(copy_person)
字典转列表
方法items()将dictionary转换为元组列表。
# 语法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
print(dct.items()) # dict_items([('key1', 'value1'), ('key2', 'value2'), ('key3', 'value3'), ('key4', 'value4')])
移删清空
字典项移除
移除字典中的项,可以通过以下三个方法:
- 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'] # 移除第二项
清空字典项
如果不需要字典中的项,可以使用clear()方法清除它们。
# 语法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
print(dct.clear()) # None
# 实际例子
person = {
# ...同上...
}
person.clear()
print(person) # {}
删除整个字典
如果我们不使用字典,我们可以完全删除它。
# 语法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
del dct
# 实际例子
person = {
# ...同上...
}
del person
print(person) # NameError: name 'person' is not defined
获取键或值列表
方法keys()可以获取字典中的所有键list。
# 语法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
keys = dct.keys()
print(keys) # dict_keys(['key1', 'key2', 'key3', 'key4'])
方法values()可以获取字典中的所有值list。
# 语法
dct = {'key1':'value1', 'key2':'value2', 'key3':'value3', 'key4':'value4'}
values = dct.values()
print(values) # dict_values(['value1', 'value2', 'value3', 'value4'])