0

给定这样的查询集:

[<'item', 'category1'>, <'item2', 'category1'>, <'item3', 'category2'>]

将其“压缩”到一个字典的 Pythonic 方法是什么,其中常见类别是键,值作为列表?例如

{ category1: [item, item2], category2: [item3] }
4

2 回答 2

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']})
于 2013-03-25T02:54:21.100 回答
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)
于 2013-03-25T03:17:12.307 回答