python 的字典结构中 key 是否必须用引号

在 Python 字典中,key 是否需要引号取决于它的数据类型,而不是语法强制要求。

✅ 不需要引号的情况

当 key 是变量名合法的标识符时,不需要引号:

name = "Alice"
age = 25# 使用变量作为 key(不需要引号)
person = {name: age}
print(person)  # {'Alice': 25}# 使用标识符作为 key(不需要引号)
config = {timeout: 30, retries: 3}

✅ 需要引号的情况

当 key 是字符串字面量时,必须用引号:

# 字符串 key 必须加引号
user = {"name": "Alice", "age": 25}# 如果 key 包含空格、特殊字符或非标识符字符,也必须加引号
data = {"first name": "Alice", "user-id": 123}

⚠️ 常见误区

很多人误以为字典的 key 必须加引号,是因为在实际开发中,字符串是最常用的 key 类型,所以看起来"总是有引号"。但这只是使用习惯,不是语法规定。

📌 核心规则

Python 字典的 key 可以是任何可哈希(hashable)的类型,包括:

  • 字符串(需要引号)
  • 整数、浮点数(不需要引号)
  • 元组(不需要引号)
  • 布尔值(不需要引号)
  • 变量名(不需要引号)

不可哈希的类型(如列表、字典、集合)不能作为 key。

# 合法示例
d = {"name": "Alice",      # 字符串 key,需要引号42: "answer",          # 整数 key,不需要引号(1, 2): "tuple key",   # 元组 key,不需要引号True: "bool key"       # 布尔 key,不需要引号
}

总结:引号只用于表示字符串字面量,与字典语法无关。key 是否需要引号,完全取决于你想用什么类型的数据作为 key。