【问题标题】:Python appending dictionary, TypeError: unhashable type?Python附加字典,TypeError:不可散列的类型?
【发布时间】:2010-10-14 00:50:16
【问题描述】:
abc = {}
abc[int: anotherint]

然后错误出现了。 TypeError:不可散列的类型?为什么我收到这个? 我试过 str()

【问题讨论】:

    标签: python dictionary


    【解决方案1】:

    由于标题说附加并且没有一个答案提供了将内容附加到字典的解决方案,所以我试一试:

    abc = {}
    abc[1]= 2
    abc['a'] = [3,9,27]
    ==> abc = {1:2, 'a':[3,9,27]}
    

    【讨论】:

      【解决方案2】:

      这似乎是语法问题:

      >>> abc = {}
      >>> abc[1] = 2
      >>> abc
      {1: 2}
      >>> abc = {1:2, 3:4}
      >>> abc
      {1: 2, 3: 4}
      >>> 
      

      至少下面的语法不正确

      abc[int: anotherint]
      

      我猜你想说

      abc = [int: anotherint]
      

      这也是不正确的。正确的做法是

      abc = {int: anotherint}
      

      除非 abc 已经定义在这种情况下:

      abc[int] = anotherint
      

      也是一个有效的选项。

      【讨论】:

        【解决方案3】:

        有两件事是错误的 - 首先你有一个逻辑错误 - 我真的不认为你想要 int(类型,不可散列 [见下文])和数字 anotherInt 之间的字典片段。当然这在 python 中是不可能的,但这就是你所说的你想要做的。

        其次,假设您的意思是 x[{int:anotherInt}]:

        该错误的意思是您不能将其用作字典中的键,通常 python 不喜欢您使用可变类型作为字典中的键 - 如果您稍后将内容添加到字典中,这会使事情变得复杂或列出...考虑以下非常令人困惑的示例:

        x={}
        x[x]=1
        

        如果您尝试为希望返回 1 的数组下标,您希望这样做会怎样?

        x[{}]
        x[{x:x}]
        x[{{}:x}]
        x[x]
        

        基本上在对可变类型进行哈希处理时,您可以说 {} != {} 关于哈希,因为它们存储在内存中的不同位置,或者您最终会遇到上述奇怪的递归情况

        【讨论】:

          猜你喜欢
          • 2012-01-21
          • 2023-03-06
          • 2015-04-01
          • 2013-10-22
          • 2013-01-23
          • 2018-03-13
          • 1970-01-01
          • 2018-12-26
          • 1970-01-01
          相关资源
          最近更新 更多