我有一个元组列表,我需要按最常见的元素对其进行排序。这个函数适用于简单类型的列表,但是使用元组我遇到了这个错误TypeError: unhashable type: 'list'
def counts(self, a_list):
hist = {}
for x in a_list:
entry = hist.get(x, 0)
hist[x] = entry+1
return hist
在这个问题上花费了太多时间之后,我意识到我的程序相当混乱和扭曲。因此,我已经开始了一些重大的重构,这个问题已经不再适用了。
答案 0 :(得分:3)
如果您的列表包含其他列表,您可以先计算嵌套列表到元组:
from collections import Counter
print(Counter(list_of_tuples).most_common())
print(Counter(map(tuple, list_of_lists)).most_common())
答案 1 :(得分:0)
你可以试试这个:
def counts(self, a_list):
hist = {}
for x in a_list:
if isinstance(x, list):
x = tuple(x)
entry = hist.get(x, 0)
hist[x] = entry+1
return hist