我有一个元组列表File2,其值如下:
(1,2,[3,4],2)
(3,5,[2,3,4,5,6,7],3)
我的数据框也有一个名为" Count"我想建立一个字典,将我的元组列表作为键和" Count"列为值:
File3 = dict(zip(File2,df.Count))
但是我收到了这个错误:
unhashable type: 'list'
请告诉我如何解决这个问题?
答案 0 :(得分:3)
[3,4]
中的 (1,2,[3,4],2)
是一个列表。列表不可清除,只有可清除的对象可能是字典的关键。要将所有列表转换为元组,可以编写类似
def make_tuples(l):
return tuple(make_tuples(i) if isinstance(i,list) else i for i in l)
如果存在包含包含列表的元组的元组,则上述操作会失败。那可能不会出现,但在那种情况下呢
from collections.abc import Sequence
def make_tuples(l):
return tuple(make_tuples(i) if isinstance(i, Sequence) else i for i in l)