Python按大多数注释元素对列表进行排序

时间:2012-03-10 01:28:59

标签: python sorting

我有一个元组列表,我需要按最常见的元素对其进行排序。这个函数适用于简单类型的列表,但是使用元组我遇到了这个错误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

在这个问题上花费了太多时间之后,我意识到我的程序相当混乱和扭曲。因此,我已经开始了一些重大的重构,这个问题已经不再适用了。

2 个答案:

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