2016-06-08 4 views
3
list1 =[ ['9034968', 'ETH'], ['14160113', 'ETH'], ['9034968', 'ETH'], ['11111', 'NOT'], ['9555269', 'NOT'], ['15724032', 'ETH'], ['15481740', 'ETH'], ['15481757', 'ETH'], ['15481724', 'ETH'], ['10307528', 'ETH'], ['15481757', 'ETH'], ['15481724', 'ETH'], ['15481740', 'ETH'], ['15379365', 'ETH'], ['11111', 'NOT'], ['9555269', 'NOT'], ['15379365', 'ETH'] 

Как подсчитать одни и те же списки в списке. Например здесь: ['9034968', 'ETH'] появляется 2 раза, также ['15481740', 'ETH']. В настоящее время я могу это сделать, используя:Подсчитайте одни и те же списки в списке

>>> for i in list1: 
     i, list1.count(i) 

Но это возвращает повторяющиеся результаты.

ответ

3

Используйте Counter,

from collections import Counter 

counter = Counter(tuple(i) for i in list1) 

преобразования в tuple делает ваши детали hashable для Counter

Вы можете сделать питания как:

counter.most_common(3) # get the 3 most common items 
+0

Спасибо! оно работает. – purple

2

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

for i in set(map(tuple, list1)): 
    i, list1.count(i) 

Еще лучше использовать collections.Counter (см ответ Моисея Koledoye в).

Смежные вопросы