値のリストを既存の辞書のリストに追加します(パフォーマンスが重要)

XO39

このような値のリストを追加する方法:

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]}]

両方のリストは同じサイズであり、両方のリストのインデックスは一致する必要があります。

パフォーマンスは重要です。

ありがとう

NathanVērzemnieks

新しいリストや辞書を作成したり、インデックスを使用したりしないアプローチを使用すると、かなり高速になるようです。これは私が見つけた最速です(そして、私の意見では、最も単純です):

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]

編集
0

コメントを追加

0

関連記事

分類Dev

Python-永続的なマスター辞書にリストの多くの辞書を追加するときのパフォーマンス

分類Dev

Pythonで既存の辞書にリスト値を追加する方法

分類Dev

Pythonリスト/辞書比較のパフォーマンス

分類Dev

タプルのリストを既存の辞書に追加します

分類Dev

追加で辞書内のリストの値に追加します

分類Dev

パンダ:列のリスト値をグループに基づいて辞書にマップします

分類Dev

辞書のリストに辞書をマップします

分類Dev

辞書のリストの辞書をパンダDataFrameに変換します

分類Dev

値がさまざまな数の辞書のリストである辞書からパンダデータフレームを生成します

分類Dev

リストを辞書のリストに効率的にマージします

分類Dev

リストと辞書でのdel演算子のパフォーマンスを比較する実験をどのように考案できますか?

分類Dev

python: リストループから既存の辞書に 1 つの要素を追加します

分類Dev

パンダデータフレーム内の辞書のリストから値を取得します。

分類Dev

辞書のリストのリスト値を更新します

分類Dev

辞書リスト値を使用してパンダデータフレームの列を選択します

分類Dev

Redisリストに辞書のキーと値を追加する

分類Dev

インスタンスのリストをデータフレームに配置しますが、1つの属性は別の辞書のリストです

分類Dev

Python 3.7のワンステップで、辞書のリストに値を初期化して追加します

分類Dev

2つのリストを比較し、辞書の新しいリストに値を追加します

分類Dev

キー値で辞書のリストをフィルタリングします-回答を辞書のリストとして返します

分類Dev

関数をリスト内の辞書の値にマップします

分類Dev

複数の値を持つ辞書の別のリストを含む辞書のリストをデータフレームに変換します

分類Dev

辞書pythonのリストに新しい辞書を追加します

分類Dev

辞書リストpythonに同じ英数字の値を追加します

分類Dev

値の間に「+」記号を追加しながら、辞書リスト値を連結します

分類Dev

辞書をリストの辞書にマージする

分類Dev

リスト内のAnsible辞書-辞書のキーと値を取得します

分類Dev

PyPy:整数のリストでNoneを使用すると、パフォーマンスが大幅に低下します

分類Dev

リストに一意のアイテムを追加します。パフォーマンスを気にする必要がありますか?

Related 関連記事

  1. 1

    Python-永続的なマスター辞書にリストの多くの辞書を追加するときのパフォーマンス

  2. 2

    Pythonで既存の辞書にリスト値を追加する方法

  3. 3

    Pythonリスト/辞書比較のパフォーマンス

  4. 4

    タプルのリストを既存の辞書に追加します

  5. 5

    追加で辞書内のリストの値に追加します

  6. 6

    パンダ:列のリスト値をグループに基づいて辞書にマップします

  7. 7

    辞書のリストに辞書をマップします

  8. 8

    辞書のリストの辞書をパンダDataFrameに変換します

  9. 9

    値がさまざまな数の辞書のリストである辞書からパンダデータフレームを生成します

  10. 10

    リストを辞書のリストに効率的にマージします

  11. 11

    リストと辞書でのdel演算子のパフォーマンスを比較する実験をどのように考案できますか?

  12. 12

    python: リストループから既存の辞書に 1 つの要素を追加します

  13. 13

    パンダデータフレーム内の辞書のリストから値を取得します。

  14. 14

    辞書のリストのリスト値を更新します

  15. 15

    辞書リスト値を使用してパンダデータフレームの列を選択します

  16. 16

    Redisリストに辞書のキーと値を追加する

  17. 17

    インスタンスのリストをデータフレームに配置しますが、1つの属性は別の辞書のリストです

  18. 18

    Python 3.7のワンステップで、辞書のリストに値を初期化して追加します

  19. 19

    2つのリストを比較し、辞書の新しいリストに値を追加します

  20. 20

    キー値で辞書のリストをフィルタリングします-回答を辞書のリストとして返します

  21. 21

    関数をリスト内の辞書の値にマップします

  22. 22

    複数の値を持つ辞書の別のリストを含む辞書のリストをデータフレームに変換します

  23. 23

    辞書pythonのリストに新しい辞書を追加します

  24. 24

    辞書リストpythonに同じ英数字の値を追加します

  25. 25

    値の間に「+」記号を追加しながら、辞書リスト値を連結します

  26. 26

    辞書をリストの辞書にマージする

  27. 27

    リスト内のAnsible辞書-辞書のキーと値を取得します

  28. 28

    PyPy:整数のリストでNoneを使用すると、パフォーマンスが大幅に低下します

  29. 29

    リストに一意のアイテムを追加します。パフォーマンスを気にする必要がありますか?

ホットタグ

アーカイブ