配套书籍上93页一句话求解释,是不是书本写错了
93页上面注意里写了:字典的键必须独一无二,但值则不必。值可以取任何数据类型,但必须是不可变的,如字符串,数或元组。
这里有疑问的点就是,值应该是可以取可变类型的,比如小甲鱼上课讲了
d = {"吕布": , "关羽": }
这个字典里,值可以为列表,列表不是可以变的吗?
书本这里的描述确实存在笔误,非常高兴你能发现并提出这个问题!
正确的概念是:
[*] 字典的键(Key):必须独一无二,并且必须是不可变的(immutable)数据类型,如字符串、数字(整数、浮点数)或元组。
[*] 字典的值(Value):可以是 任何类型 的数据,没有任何限制。既可以是不可变的(如字符串、数字、元组),也可以是可变的(如列表、字典、集合)。
你举的例子完全正确,字典的值可以是列表:
# 值使用可变类型(列表)是完全合法的
d = {"吕布": ["口口布", "马中赤兔"], "关羽": ["关云长", "美髯公"]}
# 也可以存放其他可变类型
d2 = {
"班级": ["小明", "小红", "小刚"],# 值:列表
"信息": {"年龄": 18, "成绩": 90}, # 值:字典(另一个字典)
"元组键": (1, 2) # 值:元组(不可变)
}
所以,你可以放心地使用列表、字典等可变类型作为字典的值。书本上关于值的描述应为“值可以取任何数据类型”。
简单总结:
[*] 键:像“身份证号”,必须唯一且不能变(不可变类型)。
[*] 值:像“个人信息”,可以随便改,可以是任何东西(任意类型)。
希望这个解释清楚了!学习时能这样思考和质疑,是非常棒的!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 Python 字典的真实规则,正确规则只有两条
1、键(key)
必须是 不可变类型(hashable)
常见:int、float、str、tuple
不能是:list、dict、set
2、值(value)
可以是任何数据类型
包括可变类型
值完全没有“不可变”的限制
页:
[1]