本文共 2180 字,大约阅读时间需要 7 分钟。
字典是Python中常用的数据结构,支持增删改查操作,具有高效的查找性能。以下从操作细节入手,详细说明字典的增删改查方法。
字典可以通过直接定义的方式初始化。最常见的方式是使用字典表达式:
age = {"zhangsan": 20, "lisi": 30, "wangwu": 50}
另一种方式是利用dict
构造函数,通过列表或元组的形式传递键值对:
student = dict([("name", "Tom"), ("age", 18), ("class", 90)])
在定义字典后,可以通过赋值操作动态添加新的键值对:
student = {"name": "Tom", "age": 18, "class": 90}student["address"] = "Beijing"print(student) # 输出: {'name': 'Tom', 'age': 18, 'class': 90, 'address': 'Beijing'}
需要注意的是,字典的键不能是可变类型对象,如列表、集合等。同时,相同键只能对应一个值,后续修改会覆盖原值。
以下操作会导致错误,需注意字典键的类型要求:
test = {}test[[1, 2]] = "a" # 错误,字典键不能是列表,报错类型:TypeError: unhashable type: 'list'
可以通过del
命令直接删除指定键:
age = {"zhangsan": 20, "lisi": 30, "wangwu": 50}del age["lisi"]print(age) # 输出: {'zhangsan': 20, 'wangwu': 50}
删除不存在的键会抛出KeyError
错误:
age = {"zhangsan": 20, "lisi": 30, "wangwu": 50}del age["Tom"] # 错误,KeyError: 'Tom'
清空所有键值对可以通过clear()
方法:
age = {"zhangsan": 20, "lisi": 30, "wangwu": 50}age.clear()print(age) # 输出: {}
当不再需要字典时,可以通过del
命令删除变量:
age = {"zhangsan": 20, "lisi": 30, "wangwu": 50}del age # 删除字典引用# 此操作后,变量`age`不可再用,会报错:UnboundLocalError: local variable 'age' referenced before assignment
根据键更新对应值,可以通过=
操作符:
age = {"zhangsan": 20, "lisi": 30, "wangwu": 50}age["wangwu"] = 40print(age) # 输出: {'zhangsan': 20, 'lisi': 30, 'wangwu': 40}
若键不存在,=
操作会新增该键值对:
age = {"zhangsan": 20, "lisi": 30, "wangwu": 50}age["laoliu"] = 60print(age) # 输出: {'zhangsan': 20, 'lisi': 30, 'wangwu': 50, 'laoliu': 60}
通过已知键访问对应值:
age = {"zhangsan": 20, "lisi": 30, "wangwu": 50}print(age["wangwu"]) # 输出: 50
age = {"zhangsan": 20, "lisi": 30, "wangwu": 50}for key in age: print(key) # 输出:zhangsan, lisi, wangwu
age = {"zhangsan": 20, "lisi": 30, "wangwu": 50}for key in age.keys(): print(key) # 输出:zhangsan, lisi, wangwu
age = {"zhangsan": 20, "lisi": 30, "wangwu": 50}for value in age.values(): print(value) # 输出:20, 30, 50
age = {"zhangsan": 20, "lisi": 30, "wangwu": 50}for key, value in age.items(): print(f"{key}: {value}") # 输出:zhangsan: 20, lisi: 30, wangwu: 50
字典作为核心数据结构,在Python代码中应用广泛,其灵活性和高效性使其成为开发者的重要工具。通过合理运用增删改查方法,可以有效管理数据,提升代码功能和性能。
转载地址:http://rmqo.baihongyu.com/