【问题标题】:TypeError: unhashable type: 'dict', when dict used as a key for another dict [duplicate]TypeError:不可散列的类型:'dict',当dict用作另一个dict的键时[重复]
【发布时间】:2011-05-30 17:41:47
【问题描述】:

我有这段代码:

for element in json[referenceElement].keys():

当我运行该代码时,我收到此错误:

TypeError: unhashable type: 'dict'

该错误的原因是什么,我可以做些什么来解决它?

【问题讨论】:

    标签: python json hash


    【解决方案1】:

    从错误中,我推断referenceElement 是一个字典(参见下面的repro)。字典不能被散列,因此不能用作另一个字典的键(或者它本身!)。

    >>> d1, d2 = {}, {}
    >>> d1[d2] = 1
    Traceback (most recent call last):
      File "<input>", line 1, in <module>
    TypeError: unhashable type: 'dict'
    

    您的意思可能是for element in referenceElement.keys()for element in json['referenceElement'].keys()。有了更多关于 jsonreferenceElement 是什么类型以及它们包含什么的上下文,如果这两种解决方案都不起作用,我们将能够为您提供更好的帮助。

    【讨论】:

      【解决方案2】:

      在我看来,当 Python 查找列表或元组时,调用 keys 方法会返回一个字典对象。所以尝试获取字典中的所有键,将它们放入一个列表中,然后使用 for 循环。

      【讨论】:

      • 没有。根本不是这样。 .keys() 返回一个列表。问题是他发送的 ReferenceElement 是被禁止的(你不能使用 dict 作为键,可能是一个限制阻止你将自己作为自己的键传递,这将是......荒谬)
      猜你喜欢
      • 2012-10-27
      • 2017-08-01
      • 2018-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多