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

时间:2016-10-28 14:25:08

标签: 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'

请告诉我如何解决这个问题?

1 个答案:

答案 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)