示例:
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'
是否有直接执行此操作的标准方法,还是需要更多变量?
答案 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"}
。