繁体   English   中英

queryset以通用字段为键的dict

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM