0

このようなクエリセットが与えられた場合:

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

これを、共通のカテゴリがキーであり、値がリストであるdictに「zip」するPythonの方法は何ですか?例えば

{ 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 に答える