Python сортировка списка по большинству элементов комментария - PullRequest
0 голосов
/ 10 марта 2012

У меня есть список кортежей, и мне нужно отсортировать его по наиболее распространенному элементу.Эта функция отлично работает со списками простых типов, но с кортежами я сталкиваюсь с этой ошибкой 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 ]

3 голосов
/ 10 марта 2012

Если ваш список содержит другие списки, вы можете преобразовать вложенные списки в кортежи перед подсчетом:

from collections import Counter

print(Counter(list_of_tuples).most_common())
print(Counter(map(tuple, list_of_lists)).most_common())
0 голосов
/ 10 марта 2012

Вы можете попробовать это:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...