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

0 python tuples

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

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

TypeError: 'type' object does not support item assignment
Run Code Online (Sandbox Code Playgroud)

DSM*_*DSM 7

有可能.问题是你正在尝试访问dict类型本身的项目.

>>> a = (1,2,3)
>>> d = {}
>>> d[a] = "hi"
>>> d
{(1, 2, 3): 'hi'}
Run Code Online (Sandbox Code Playgroud)

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

(请注意,您永远不应该命名您的词典dict或列表list等.这会影响内置名称,并且它们通常很方便,例如dict(zip(keys, values)).)


iCo*_*dez 5

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

>>> a = (1,2,3)
>>> b = {a:'hi'}
>>> b[(1,2,3)]
'hi'
>>>
Run Code Online (Sandbox Code Playgroud)

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

>>> dict
<type 'dict'>
>>>
Run Code Online (Sandbox Code Playgroud)