为了账号安全,请及时绑定邮箱和手机立即绑定

python dict key问题

课程里是这么说的

dict的第三个特点是作为 key 的元素必须不可变,Python的基本类型如字符串、整数、浮点数都是不可变的,都可以作为 key。但是list是可变的,就不能作为 key。

但是为什么变量的值也是可变的,但是可以作为Key?

>>> x=1
>>> d={x:1}
>>> print d[x]
1
>>> x=2
>>> print d[x]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 2
>>> print l
['1', 2]
>>> d={l:1}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

正在回答

4 回答

## 其实这个很容易理解的,具体原理就不查 doc 了, 直接写例子
a = 1
d = {a : 2}
print d
{1 : 2}

d1 = {1 : 2}

print d1==d
True

是不是懂了,,

1 回复 有任何疑惑可以回复我~
x = 3
d =  { x : 2 }
print  d[x]
2
x = 1
print d[x]

这个打印出来会报错可以从id(x)的结果来解释,x = 3时id(x)与x = 1的id(x)不同,即发生了改变。

0 回复 有任何疑惑可以回复我~

这里的是否可变是不是指的指向的存储块是否可变?而不是单纯的值可变?

0 回复 有任何疑惑可以回复我~

变量做为key,加入到dict中,实际是已变量当前的值作为key, 看你自己的例子中,当x=2时,错误信息指出是keyError:2 而不是keyError:x 

1 回复 有任何疑惑可以回复我~
#1

CoderLeob 提问者

我知道为什么报错,我想问的是为什么可变的list不能作为key,而可变的变量却可以
2016-05-12 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758625    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

python dict key问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信