2016-01-12 4 views
1

Я применил функцию счетчика из модуля коллекций к списку. После того, как я это сделаю, я не совсем понимаю, о чем будет охарактеризовано содержание новой структуры данных. Я также не уверен, какой предпочтительный метод для доступа к элементам.Python - доступ к содержимому списка после применения метода Counter from collections

Я сделал что-то вроде:

theList = ['blue', 'red', 'blue', 'yellow', 'blue', 'red'] 
newList = Counter(theList) 
print newList 

, который возвращает:

Counter({'blue': 3, 'red': 2, 'yellow': 1}) 

Как получить доступ к каждому элементу и распечатать что-то вроде:

blue - 3 
red - 2 
yellow - 1 

Любое руководство будет будем очень благодарны.

Edit:

Благодаря Энди, я думаю, что это решение моей проблемы:

for i,j in newList.most_common(): 
     print i, j 

ответ

1

Объект Counter является суб-класс словаря.

Счетчик является подклассом подкласса для подсчета объектов хеширования. Это неупорядоченная коллекция, в которой элементы хранятся в виде словарных ключей, а их подсчеты хранятся как значения словаря.

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

>>> from collections import Counter 
>>> theList = ['blue', 'red', 'blue', 'yellow', 'blue', 'red'] 
>>> newList = Counter(theList) 
>>> newList['blue'] 
3 

Если вы хотите печатать ключи и значения, которые вы можете сделать это:

>>> for k,v in newList.items(): 
...  print(k,v) 
... 
blue 3 
yellow 1 
red 2 
+0

Спасибо. Это многое проясняет. Есть ли способ заставить пары ключ-значение печатать в порядке убывания количества? –

+0

Словари являются несортированными, но вы можете совершить небольшое обруч, чтобы сделать печать в отсортированном порядке. См. Этот ответ для получения дополнительной информации (и принятого ответа для OrderedDictionaries в целом): http://stackoverflow.com/a/13990710/189134 – Andy

+0

Спасибо. Это большая помощь. Я думаю, что нашел решение, изменив свой код с newList.items() на newList.most_common(). –