2014-04-10 33 views
0

例子:從列表中的項目作爲新字典的鍵

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' 

有沒有一個標準的方法直接做到這一點,還是我需要經過更多的變量?

回答

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'} 
+0

非常感謝! – Scironic

1

您收到

TypeError: unhashable type: 'list'

,因爲你試圖用一個列表作爲字典鍵。這是不可能的。要使用列表元素作爲新字典的關鍵字,您應該指定要使用哪個列表元素。如果你想a{"key1": "item"}

相關問題