Python 按属性对字典项进行分组
我正在尝试按特定键对字典中的项进行分组,假设我们有以下字典:Python 按属性对字典项进行分组,python,dictionary,Python,Dictionary,我正在尝试按特定键对字典中的项进行分组,假设我们有以下字典: [{'type': 'animal', 'name': 'rabbit'}, {'type': 'animal', 'name': 'cow'}, {'type': 'plant', 'name': 'orange tree'}, {'type': 'animal', 'name': 'coyote'}] 我想按类型对这些项目进行分组。根据这一点,可以使用defaultdict()来完成,因为它不会引发KeyError,如下所示:
[{'type': 'animal', 'name': 'rabbit'}, {'type': 'animal', 'name': 'cow'}, {'type': 'plant', 'name': 'orange tree'}, {'type': 'animal', 'name': 'coyote'}]
我想按类型对这些项目进行分组。根据这一点,可以使用defaultdict()
来完成,因为它不会引发KeyError
,如下所示:
grouped = defaultdict()
for item in items:
grouped[item.type].append(item)
然而,我实际上得到了一个keyrerror
那怎么了?我看到的所有信息都说defaultdict()
我使用的是Python 2.7。使用defaultdict(list)
,而不是defaultdict()。阅读defaultdict的文档以了解更多信息
此外,您不能使用某些dict.a_键(在您的情况下:.type)-您必须使用一些dict['a_键]](在您的情况下['type'])使用defaultdict(list)
,而不是defaultdict()
。阅读defaultdict的文档以了解更多信息
此外,您不能使用某些dict.a_键(在您的情况下为:.type)-您必须使用某些dict['a_键]](在您的情况下为['type'])您还可以使用普通字典及其方法:
结果将是这样(格式很好):
您还可以使用普通词典及其方法:
结果将是这样(格式很好):
l = [{'type': 'animal', 'name': 'rabbit'}, {'type': 'animal', 'name': 'cow'}, {'type': 'plant', 'name': 'orange tree'}, {'type': 'animal', 'name': 'coyote'}]
d = {}
for x in l:
d.setdefault(x["type"], []).append(x)
print d
{'plant' : [{'type': 'plant', 'name': 'orange tree'}],
'animal': [{'type': 'animal', 'name': 'rabbit'},
{'type': 'animal', 'name': 'cow'},
{'type': 'animal', 'name': 'coyote'}]}
from collections import defaultdict
animals=[{'type': 'animal', 'name': 'rabbit'}, {'type': 'animal', 'name': 'cow'},
{'type': 'plant', 'name': 'orange tree'}, {'type': 'animal', 'name': 'coyote'}]
animal_by_type = defaultdict(list)
for animal in animals:
animal_by_type[animal['type']].append(animal['name'])
print animal_by_type