在 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。