Collections计数器模块与most_common类的问题

时间:2016-08-26 15:00:52

标签: python

我有一个名为ltst3_upper的List字典,现在我正在尝试使用类most_common来获取前10个键:使用以下代码的值:

result3  = Counter(list3_upper).most_common(10)
sort_result3 = OrderedDict(sorted(result3.items(), key=operator.itemgetter(1), reverse=True))

我正在将这些代码放在几个列表中,这些列表是有组织的'使用Counter,其中一些键有10个以上键:值,所以我想修剪Dict。

聚苯乙烯。正如你所看到的那样,除了前10个值之外,我还要从最高到最小,但我不认为问题就在那里。

错误是:

AttributeError: 'list' object has no attribute 'items'

是否发生这种情况是因为某些列表没有10个键:值?

非常感谢您提供的任何输入。

1 个答案:

答案 0 :(得分:1)

As the documentation states, most_common返回最常见元素的列表。 .itemsdict方法 - 列表没有项目。如果你想对列表中的所有成员做一些事情,你会迭代它们..:

for result in result3:
    o = OrderedDict(sorted(result.items(), key=operator.itemgetter(1), reverse=True))

这也不起作用 - 列表中的个别成员是tuple,而不是dict - 而tuple个对象没有items方法。相反,只需使用OrderedDict创建result

from collections import Counter, OrderedDict
import operator

list3_upper = ['a', 'e', 'a']

result3  = Counter(list3_upper).most_common(10)

result_dict = OrderedDict(result3)
print(result_dict)
>>> OrderedDict([('a', 2), ('e', 1)])