字典(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"

最后更新于