我有一个词典列表。 每个字典都有一个颜色属性。例如:
{'att1':value1, 'att2': value2, 'colour': 'Red'}
colou属性来自15种最大颜色的列表。
我在列表中有超过一千个这样的词典。我需要找出流行的颜色是什么,有多少个实例? Simiilarly我需要第二个最流行的颜色,它的实例数量,第三,最第四等......
一些花哨的pythonic语法可以帮助我吗?
答案 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}
您可能会找到一种方法来查找最大值等或对其进行排序。