首頁  >  文章  >  後端開發  >  如何在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>

目標是透過對應的鍵(每個元群組中的第二個元素)將這些資料分組,並以以下格式傳回分組結果:

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

解決方案

以下是有效對資料分組的步驟:

  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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn