このような値のリストを追加する方法:
l = [[1, 2], [2, 3], [3, 4]]
このような辞書の既存のリストに:
d = [{'id': 1, 'type': 'normal'},
{'id': 2, 'type': 'low'},
{'id': 3, 'type': 'hight'}]
最終結果は次のようになります。
d = [{'id': 1, 'type': 'normal', 'groups': [1, 2]},
{'id': 2, 'type': 'low', 'groups': [2, 3]},
{'id': 3, 'type': 'hight', 'groups': [3, 4]}]
両方のリストは同じサイズであり、両方のリストのインデックスは一致する必要があります。
パフォーマンスは重要です。
ありがとう
新しいリストや辞書を作成したり、インデックスを使用したりしないアプローチを使用すると、かなり高速になるようです。これは私が見つけた最速です(そして、私の意見では、最も単純です):
for sub_d, groups in zip(d, l):
sub_d['groups'] = groups
私のテストでは、これは約3d = [{**s, 'groups': g} for s, g in zip(d, l)]
倍の速さ(1000000辞書のリストでは0.085秒対0.25秒)であり、for i in range(len(d))
アプローチの約2倍の速さです。また、前者に比べて利点があります(場合によっては欠点もありますが)。辞書が適切に更新されるため、新しいリストを作成せずに長いリストを更新できます。
ただし、注目に値する2つのことがあります。1つは、一般に、さまざまなアプローチのパフォーマンスは、データと残りのコードの正確な構造によって大幅に異なることがよくあります。2つ目は、コードの特定のビットのパフォーマンスは、多くの場合、想像するよりもはるかに重要ではありません。マイクロ秒の違いはあなたのコードで本当に重要ですか?それとも、何百万もの辞書と秒の問題を扱っていますか?個人的に、私はあなたのコードは、多かれ少なかれ完了する前に、それは早すぎる最適化について多くの話をすることが一般的だと思うし、あなたはそれがあまりにも遅いです決定しましたし、あなたが現実的な状況でそれをプロファイリングしました。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加