[英]queryset to dict with common fields as keys
给定这样的查询集:
[<'item', 'category1'>, <'item2', 'category1'>, <'item3', 'category2'>]
用Python的方式将其“压缩”到字典中的方式是什么,在该字典中常见类别是键,值作为列表? 例如
{ category1: [item, item2], category2: [item3] }
使用defaultdict
。 如果字典中不存在键,它将返回默认构造的项。 在它的下面将返回一个空列表,因此可以对每个项目进行追加,而无需对不存在的密钥进行特殊处理。
from collections import defaultdict
D = defaultdict(list)
data = [('item', 'category1'), ('item2', 'category1'), ('item3', 'category2')]
for item,category in data:
D[category].append(item)
print(D)
输出:
defaultdict(<class 'list'>, {'category2': ['item3'], 'category1': ['item', 'item2']})
我确信它们是一种更清洁的方法,但是以下方法当然可以工作:
qs = [('item', 'category1'), ('item2', 'category1'), ('item3', 'category2')]
for item, cat in qs:
if cat not in cat_dict:
cat_dict[cat] = []
cat_dict[cat].append(item)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.