私は性質prop1
とprop2
と項目の一覧から、次のような構造を持つデータセットを生成しようとしています:私はできているO(n)の中で、リストから設定分類されたデータを生成する
result[p1][p2] => list of item with prop1=p1 and prop2=p2
でO(N2)でそれを行うには:
result = {
item.prop1: {
item.prop2: [
i
for i in item_list
if i.prop1 == item.prop1 and i.prop2 == item.prop2
]
}
for item in item_list
}
しかし、少ない時間でそれを行うための方法を見つけることができませんでした。 O(n)でこれを達成することは可能ですか?
それはかなり動作しませんが。 'defaultdict(lambda:defaultdict(list))'を使う必要があります。あなたのバージョンでは 'result [item.prop1]'はリストになるので、 'result [item.prop1] [item.prop2]'にアクセスしようとすると失敗する可能性があります。 – BrenBarn
あなたは絶対に正しいです - 私はそれが2次元マトリックスであることを見落としました。一定! – Karin