为什么可以';元组不是python中字典的键吗?

为什么可以';元组不是python中字典的键吗?,python,tuples,Python,Tuples,为什么我不能做以下事情: a = (1,2,3) dict[a] = 'hi' TypeError: 'type' object does not support item assignment 可能是。问题是您试图访问dict类型本身中的项目 >>> a = (1,2,3) >>> d = {} >>> d[a] = "hi" >>> d {(1, 2, 3): 'hi'} 正如@mgilson在评论中所说:“元组可

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

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

TypeError: 'type' object does not support item assignment

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

>>> a = (1,2,3)
>>> d = {}
>>> d[a] = "hi"
>>> d
{(1, 2, 3): 'hi'}
正如@mgilson在评论中所说:“元组可以散列,只要它们的所有元素都可以散列。”


(请注意,您不应为词典命名
dict
,或列出
list
,等等。这会隐藏内置名称,而且它们通常很方便,例如
dict(zip(键、值))

dict
是一种类型。您希望创建该类型的实例

d = {}
a = (1, 2, 3)
d[a] = 'hi'
可以将元组用作键(只要其所有项都可以散列):

您的问题是,您正在尝试为内置函数编制索引:

dict >>>
@user3062488:没必要这样想——你通过尝试事物然后看到它们如何失败来学习。^)但更重要的教训是,如果您按照Python错误消息的字面意思来理解它们,那么Python错误消息是非常有用的。消息
TypeError:“type”对象不支持项分配
意味着您正在尝试对
类型
的对象进行分配,因此即使没有任何上下文,我们也可以知道发生了什么。谢谢。我会确保从现在起至少读一次:)
>>> a = (1,2,3)
>>> b = {a:'hi'}
>>> b[(1,2,3)]
'hi'
>>>
>>> dict
<type 'dict'>
>>>