ホームページ  >  記事  >  バックエンド開発  >  Python でデータをキーごとにグループ化し、結果を特定の形式で返し、キーが繰り返されるデータを効果的に処理し、順序を維持するにはどうすればよいですか?

Python でデータをキーごとにグループ化し、結果を特定の形式で返し、キーが繰り返されるデータを効果的に処理し、順序を維持するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-28 14:08:30847ブラウズ

How can I group data by keys in Python and return the result in a specific format, effectively handling data with repeating keys and maintaining order?

キーによる Python のデータのグループ化

このガイドでは、Python で特定のキーによってデータをグループ化するタスクについて説明します。私たちは、指定されたデータセットに対して効率的で順序付けられたグループ化ソリューションを実現することを目指しています。

問題ステートメント

キーと値のペアとして表される次のデータセットを考えてみましょう:

<code class="python">input = [
          ('11013331', 'KAT'), 
          ('9085267',  'NOT'), 
          ('5238761',  'ETH'), 
          ('5349618',  'ETH'), 
          ('11788544', 'NOT'), 
          ('962142',   'ETH'), 
          ('7795297',  'ETH'), 
          ('7341464',  'ETH'), 
          ('9843236',  'KAT'), 
          ('5594916',  'ETH'), 
          ('1550003',  'ETH')
        ]</code>

目的は、これらのデータ ペアを対応するキー (各タプルの 2 番目の要素) でグループ化し、グループ化された結果を次の形式で返すことです:

<code class="python">result = [ 
           { 
             'type': 'KAT', 
             'items': ['11013331', '9843236'] 
           },
           {
             'type': 'NOT', 
             'items': ['9085267', '11788544'] 
           },
           {
             'type': 'ETH', 
             'items': ['5238761', '962142', '7795297', '7341464', '5594916', '1550003'] 
           }
         ] </code>

Solution

データを効率的にグループ化する手順は次のとおりです:

  1. 辞書を作成します: 各キーの項目を保存するには、defaultdict を使用します。新しいキーごとに空のリストを作成するデフォルトのファクトリを使用して辞書を初期化します。

    <code class="python">from collections import defaultdict
    
    res = defaultdict(list)
    for v, k in input:
     res[k].append(v)</code>
  2. 辞書を期待される形式に変換します: 最終的な形式を生成するには結果として、辞書を目的の構造を持つ辞書のリストに変換します。

    <code class="python">result = [{'type': k, 'items': v} for k, v in res.items()]</code>

オプションのメモ:

  • Python 3.7 では、辞書は挿入順序を維持しませんでした。キーの元の順序を保持するには、代わりに OrderedDict の使用を検討してください。
  • あるいは、グループ化に itertools.groupby 関数を使用することもできますが、入力を事前に並べ替える必要があります。
  • 大規模なデータセットの場合、ここで紹介するメモリ内ソリューションよりも、グループ化機能を備えたデータベースを使用する方が効率的である可能性があります。

以上がPython でデータをキーごとにグループ化し、結果を特定の形式で返し、キーが繰り返されるデータを効果的に処理し、順序を維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。