在 Python 中,字典(dict)是一种可变的键值映射容器。它由(key)和(value)组成,每个键必须唯一且可哈希,而值可以是任意对象。

字典是 Python 最常用的数据结构之一,适合存储映射关系,如学生成绩表、配置项等。

一、创建字典的常见方式

1、使用字面量 {}

最常见、最直观的方式:

d1 = {"a": 1, "b": 2, "c": 3}
print(d1)   # {'a': 1, 'b': 2, 'c': 3}

可嵌套使用:

nested = {"student": {"name": "Alice", "age": 20}}
print(nested["student"]["name"])  # Alice

2、使用 dict() 构造函数

可以从多种数据结构创建字典:

# 关键字参数
d2 = dict(a=1, b=2)
print(d2)   # {'a': 1, 'b': 2}

# 序列(二元组列表)
d3 = dict([("a", 1), ("b", 2)])
print(d3)   # {'a': 1, 'b': 2}

# 另一种常见场景:zip 打包
keys = ["name", "age"]
values = ["Tom", 18]
d4 = dict(zip(keys, values))
print(d4)   # {'name': 'Tom', 'age': 18}

3、使用字典类方法 fromkeys()

快速生成多个键,并赋予相同的默认值:

d5 = dict.fromkeys(["a", "b", "c"], 0)
print(d5)   # {'a': 0, 'b': 0, 'c': 0}

4、字典推导式

与列表推导式类似,但使用的是花括号 {}:

# 数字及其平方
squares = {x: x**2 for x in range(5)}
print(squares)  # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

# 条件筛选
evens = {x: "even" for x in range(10) if x % 2 == 0}
print(evens)   # {0: 'even', 2: 'even', 4: 'even', 6: 'even', 8: 'even'}

推导式适合一行生成映射关系,简洁高效。

5、空字典

empty1 = {}
empty2 = dict()
print(empty1, empty2)   # {} {}

二、创建字典的常见误区

1、字典与集合 {} 混淆

s = {1, 2, 3}        # 这是集合,不是字典
d = {"a": 1, "b": 2} # 这是字典

2、键必须可哈希

列表、字典、集合等不可哈希对象不能作为键:

# d = {[1, 2]: "value"}   # ❌ TypeError: unhashable type: 'list'
d = {(1, 2): "value"}     # ✅ 元组可作为键

3、推导式中键重复会覆盖

d = {x % 2: x for x in range(5)}
print(d)   # {1: 3, 0: 4} 后面的键值对覆盖了前面的

小结

字典是 Python 的可变键值容器,常见的创建方式包括:

1、字面量 {}

2、dict() 构造函数

3、fromkeys()

4、字典推导式

常见误区:不要把集合和字典混淆;键必须可哈希;推导式遇到重复键会覆盖。

点赞有美意,赞赏是鼓励