为什么元组不能成为python中字典的键?

时间:2013-12-03 17:21:19

标签: python tuples

为什么我不能做以下事情:

a = (1,2,3)
dict[a] = 'hi'

TypeError: 'type' object does not support item assignment

3 个答案:

答案 0 :(得分:7)

可以。问题是您正试图访问dict类型本身的项目。

>>> a = (1,2,3)
>>> d = {}
>>> d[a] = "hi"
>>> d
{(1, 2, 3): 'hi'}

正如@mgilson所说:“只要所有元素都可以进行哈希处理,就可以对元组进行哈希处理。”

(请注意,您不应该为您的词典dict命名,或列出list等。这会影响内置名称,并且它们通常很方便,例如{{1 }}。)

答案 1 :(得分:5)

可以使用元组作为键(只要它的所有项都可以清除):

>>> a = (1,2,3)
>>> b = {a:'hi'}
>>> b[(1,2,3)]
'hi'
>>>

您的问题是您正在尝试索引内置函数dict

>>> dict
<type 'dict'>
>>>

答案 2 :(得分:2)

dict是一种类型。您想要创建该类型的实例。

d = {}
a = (1, 2, 3)
d[a] = 'hi'