字典(Dictionary)
创建字典
# 方式1:使用花括号 {} 和键值对
dict1 = {"name": "Alice", "age": 20, "city": "Beijing"}
# 方式2:使用 dict() 构建函数,这种方式要求键是有效的标识符(通常是字符串)
dict2 = dict(name="Alice", age=20, city="Beijing")
# 方式3:使用键值对的序列(如列表或元组)
dict3 = dict([("name", "Alice"), ("age", 20), ("city", "Beijing")])
dict4 = dict(zip(["name", "age", "city"], ["Alice", 20, "Beijing"]))
# 方式4:创建空字典
empty_dict1 = {}
empty_dict2 = dict()
访问字典元素
使用方括号[]
或get()
方法。
# 方式1: 使用 []
print(person['name']) # 输入:Alice
# print(person["height"]) # KeyError: 'height' (键不存在时会报错)
# 方式2: 使用 get() 方法(推荐,更安全)
print(person.get("name")) # 输出:Alice
print(person.get("height")) # 输出:None (键不存在时返回 None)
print(person.get("height", "Unknown")) # 输出:Unknown (可以指定默认值)
检查键是否存在:使用in
关键字
if "age" in person:
pring("Age is persent")
修改和添加元素
person = {"name": "Alice", "age": 20, "city": "Beijing"}
# 添加新键值对:为不存在的键赋值
person['height'] = 180
# 修改现有键的值:为已存在的键重新赋值
person['age'] = 25
# 批量更新:使用 update() 方法
person.update({"height": 181, "age": 25})
删除元素
del 语句:删除指定键的键值对。
del person['city'] # 删除 key 为 “city” 的项
# del person['nonexistent'] # KeyError: 'nonexistent'
pop()
方法:删除指定键的键值对,并返回其值。
city = person.pop("city") # Beijing
pring(city) # Beijing
# height = person.pop("height") # KeyError: 'height'
height = person.pop("height", "Unknown") # 指定默认值
popitem()
方法:删除并返回字典中的最后一个键值对。
last_item = person.popitem() # 返回一个元组 (key, value)
print(last_item) # 例如 ('city', 'Beijing')
clear()
方法:清空整个字典,使其成为空字典。
person.clear() # person 变成 {}
字典的遍历(迭代)
可以遍历字典的键、值或者键值对。
# 遍历键
for key in person:
print(key)
# 等价于
for key in person.keys():
print(key)
# 遍历值
for value in person.valies():
print(value)
# 等价于
for key, value in person.items():
print(f"{key}: {value}")
常用方法
len(dict)
返回字典中键值对的数量
len(scores)
-> 3
dict.keys()
返回一个包含所有键的视图对象 (dict_keys)
scores.keys()
-> dict_keys(['Math', 'English', 'Science'])
dict.values()
返回一个包含所有值的视图对象 (dict_values)
scores.values()
-> dict_values([95, 88, 92])
dict.items()
返回一个包含所有键值对的视图对象 (dict_items)
scores.items()
-> dict_items([('Math', 95), ('English', 88), ('Science', 92)])
dict.get(key, default)
获取键对应的值,如果键不存在则返回 default
scores.get("History", 0)
-> 0
dict.pop(key, default)
删除键并返回其值,如果键不存在则返回 default
scores.pop("English")
-> 88
dict.popitem()
删除并返回最后一个键值对
scores.popitem()
-> ('Science', 92)
dict.update(other)
用另一个字典或可迭代对象更新当前字典
scores.update({"Art": 90})
dict.clear()
清空字典
scores.clear()
dict.copy()
返回字典的浅拷贝
new_scores = scores.copy()
字典推导式
类似于列表推导式,提供了一种简洁的方式来创建新字典
# 从列表创建字典
squares = {x: x**2 for x in range(1, 6)}
# 结果:{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
# 从另一个字典过滤或转换
original = {"a": 1, "b": 2, "c": 3, "d": 4}
# 只保留值为偶数的项
evens = {k: v for k, v in original.items() if v % 2 == 0}
# 结果:{'b': 2, 'd': 4}
嵌套字典
students = {
"Alice": {
"age": 20,
"grades": {"Math": 95, "English": 88}
},
"Bob": {
"age": 21,
"grades": {"Math": 85, "English": 92}
}
}
# 访问嵌套值
print(students["Alice"]["grades"]["Math"]) # 输出: 95
# 添加新信息
students["Alice"]["major"] = "Computer Science"
最后更新于