给出这样的查询集:
[<'item', 'category1'>, <'item2', 'category1'>, <'item3', 'category2'>]
什么是将这个“压缩”到一个字典的Pythonic方法,其中常见的类别是键,值是列表? e.g。
{ category1: [item, item2], category2: [item3] }
答案 0 :(得分:1)
使用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']})
答案 1 :(得分:0)
我确信他们的方法比较干净,但以下情况肯定会有效:
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)