计算某种类型的词典数量

时间:2012-02-08 10:13:37

标签: python

我有一个词典列表。 每个字典都有一个颜色属性。例如:

{'att1':value1, 'att2': value2, 'colour': 'Red'}

colou属性来自15种最大颜色的列表。

我在列表中有超过一千个这样的词典。我需要找出流行的颜色是什么,有多少个实例? Simiilarly我需要第二个最流行的颜色,它的实例数量,第三,最第四等......

一些花哨的pythonic语法可以帮助我吗?

4 个答案:

答案 0 :(得分:6)

from collections import defaultdict
colours = defaultdict(int)
for item in mylist:
   colours[item["colour"]] +=1

为您提供defaultdict,其中包含所有颜色及其各自的编号。以排序的方式显示它们是微不足道的。

答案 1 :(得分:5)

您可以像这样使用计数器和生成器:

distribution = collections.Counter(d['colour'] for d in list_of_dict)
distribution.most_common(2)

答案 2 :(得分:3)

使用map将每个字典映射到其颜色,然后使用collections.Counter。这种方式应该是单行。像

这样的东西
collections.Counter(map(lambda x: x.get("color"), listofdict))

答案 3 :(得分:0)

l = []
for x in xrange(100):
   l.append({'att1':1, 'att2': 2, 'colour': 'Red'})

for x in xrange(10):
   l.append({'att1':1, 'att2': 2, 'colour': 'Blue'})

colors = [i['colour'] for i in l]

dcolors = {}
for i in colors:
   if not i in dcolors:
       dcolors[i] = 0
   dcolors[i] += 1

print dcolors

我创建了100个红色和10个蓝色项目,打印结果为:

{'Blue': 10, 'Red': 100}

您可能会找到一种方法来查找最大值等或对其进行排序。