字典(dict)是Python中常用的一种数据结构,由“键-值”对组成,每个“键-值”对称为一个元素,每个元素表示一种映射或对应关系。以下是字典的所有操作和方法:
一、字典的创建
-
直接赋值创建字典
字典的元素放在大括号“{}”中,元素之间用逗号“,”分隔,“键”与“值”之间用冒号“:”分隔。例如:
python复制代码
stu = {'name': '张三', 'num': '20012101', 'sex': 'female'}
-
使用内置函数dict()创建字典
-
通过其他字典创建:
python复制代码
stu1 = {'num': '20190101', 'name': '张三', 'sex': 'male'}
stu2 = dict(stu1)
-
通过“(键, 值)”对的序列创建:
python复制代码
stu3 = dict([('num', '20190101'), ('name', '张三'), ('sex', 'male')])
-
通过关键字参数创建:
python复制代码
stu4 = dict(num='20190101', name='张三', sex='male')
-
通过dict和zip结合创建:
python复制代码
stu5 = dict(zip(['num', 'name', 'sex'], ['20190101', '张三', 'male']))
-
-
使用fromkeys()方法创建字典
当所有键对应同一个值时,可使用fromkeys()方法创建字典。语法格式为:
dict.fromkeys(seq[, value])
。其中,seq为字典“键”值列表;value为设置键序列(seq)的值,省略时默认为None。例如:python复制代码
stu_age = dict.fromkeys(['zhangsan', 'lisi', 'wangwu'], 18) # “键”值默认为18
stu_age_none = dict.fromkeys(['zhangsan', 'lisi', 'wangwu']) # “键”值默认为None
二、字典的访问
-
根据键访问值
将提供的“键”作为下标可以访问对应的“值”,如果字典中不存在这个“键”则会抛出异常。例如:
python复制代码
stu = {'name': 'zhangsan', 'num': '20190101', 'sex': 'male'}
print(stu['name']) # 输出: zhangsan
-
使用get()方法访问值
若不确定字典中是否有某个键,可通过get()方法进行获取。若该键存在,则返回其对应的值;若不存在,则返回默认值(默认为None,也可自行设置)。例如:
python复制代码
print(stu.get('name')) # 输出: zhangsan
print(stu.get('age')) # 输出: None
print(stu.get('age', 18)) # 设置返回默认值为18,输出: 18
三、修改和添加元素
使用赋值语句可以添加或更新字典中的键值对。如果键已经存在,则会更新对应的值;如果键不存在,则会添加新的键值对。例如:
python复制代码
my_dict = {'name': 'Alice', 'age': 25} | |
my_dict['city'] = 'New York' # 添加键值对 | |
my_dict['age'] = 26 # 更新值 |
四、删除元素
-
使用del命令
可根据“键”删除字典中的元素。例如:
python复制代码
s = {'a': 'I', 'b': 'love', 'c': 'python'}
del s['a'] # 删除a及其值
-
使用clear()方法
用于清除字典中的所有元素。例如:
python复制代码
s = {0: 'I', 1: 'love', 2: 'python'}
s.clear() # 清空字典
-
使用pop()方法
用于获取指定“键”的值,并将这个“键-值”对从字典中移除。如果字典中没有要被删除的键,可以指定一个默认值返回。例如:
python复制代码
s = {'name': 'zhangsan', 'age': '17'}
print(s.pop('age')) # 返回并删除'age'键-值对,输出: 17
print(s.pop('age', 18)) # 无指定键,返回默认值18,输出: 18
-
使用popitem()方法
用于随机获取一个“键-值”对,并将其删除。返回值为一个随机的“键-值”对(Python 3.7+ 版本中,popitem() 弹出的是最后插入的键值对)。例如:
python复制代码
s = {0: 'apple', 1: 'banana', 2: 'pear'}
print(s.popitem()) # 随机返回某“键-值”对并删除,输出类似: (2, 'pear')
五、检查键是否存在
使用in
关键字可以检查一个键是否存在于字典中。例如:
python复制代码
my_dict = {'name': 'Alice', 'age': 25} | |
if 'name' in my_dict: | |
print("Name exists in the dictionary") |
六、获取所有键、所有值和键值对
-
使用keys()方法
获取字典中的所有键的视图。例如:
python复制代码
all_keys = my_dict.keys()
-
使用values()方法
获取字典中的所有值的视图。例如:
python复制代码
all_values = my_dict.values()
-
使用items()方法
获取字典中的所有键值对的视图。例如:
python复制代码
all_items = my_dict.items()
七、字典的其他操作和方法
-
映射类型操作符
- 键查找操作符([]):用于通过键访问字典中的值或给字典赋值。
- 成员关系操作符(in, not in):用于检查某个键是否存在于字典中。
-
映射类型的内建函数
type()
:返回字典的类型。str()
:返回字典的字符串表示形式。sorted()
:可对键、值、键值对进行排序。len()
:返回字典中键值对的数目。hash()
:判断某个对象是否可以做一个字典的键(通常不直接用于字典,但可用于判断对象的可哈希性)。
-
字典的类型转换
dict()
:用于创建字典。fromkeys()
:已在上文“字典的创建”部分介绍。
综上所述,字典提供了丰富的操作和方法,以满足不同的编程需求。通过熟练掌握这些操作和方法,可以更加高效地管理和操作键值对数据。