元组列表作为Python中字典的键

元组列表作为Python中字典的键,python,dictionary,tuples,Python,Dictionary,Tuples,我有一个元组列表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' 你能告诉我如何解决这个问题吗?[3,4]中的(1,2,[3,4],2)是一个列表。列表是不可散列的,只有可散

我有一个元组列表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'

你能告诉我如何解决这个问题吗?

[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)

一个简单的解决方法是使用
str(您的_键)
作为实际键。如果性能是一个问题,并且您确定列表只有一个级别,请更改返回到
return tuple(tuple(i)If is instance(i,list)else i for i in l)