使用列表中的项作为新的字典键

时间:2014-04-10 13:26:58

标签: python list python-3.x dictionary

示例:

a = {}
b = "item"
c = ["key1","key2"]

a[c][0] = b

如果按照我想要的方式工作,会导致:

>>>a
{"key1": "item"}

但我得到了:

Traceback (most recent call last):
  File "<pyshell#49>", line 1, in <module>
    a[c][0] = b
TypeError: unhashable type: 'list'

是否有直接执行此操作的标准方法,还是需要更多变量?

2 个答案:

答案 0 :(得分:7)

将中的索引移动到实际列表对象:

a[c[0]] = b

因为您希望c[0]成为关键,而不是c本身。

在您的版本中,Python首先评估a[c],然后将结果索引到[0]

演示:

>>> a = {}
>>> b = "item"
>>> c = ["key1","key2"]
>>> a[c[0]] = b
>>> a
{'key1': 'item'}

答案 1 :(得分:1)

您正在接收

  

TypeError:不可用类型:&#39; list&#39;

因为您尝试将列表用作dict键。这是不可能的。要使用list元素作为新dict的键,您应该指定要使用的列表元素。

a[c[0]] = b如果您希望a{"key1": "item"}