Rumah > pembangunan bahagian belakang > Tutorial Python > Berikut ialah tajuk yang sesuai untuk artikel anda, dengan mengambil kira format soalan: Cara Menghimpunkan Pasangan Data mengikut Jenis dalam Python: Penyelesaian Cekap dengan `defaultdict` dan `itertools.groupby`

Berikut ialah tajuk yang sesuai untuk artikel anda, dengan mengambil kira format soalan: Cara Menghimpunkan Pasangan Data mengikut Jenis dalam Python: Penyelesaian Cekap dengan `defaultdict` dan `itertools.groupby`

Linda Hamilton
Lepaskan: 2024-10-27 07:06:03
asal
922 orang telah melayarinya

Here's a suitable title for your article, keeping the question format in mind: 

How to Group Data Pairs by Type in Python: Efficient Solutions with `defaultdict` and `itertools.groupby`

Kumpulan Python Oleh

Masalah:

Diberi satu set pasangan data di mana item pertama ialah nilai dan item kedua ialah jenis, kumpulkan mereka berdasarkan jenis.

Contoh:

input = [
  ('11013331', 'KAT'),
  ('9085267', 'NOT'),
  ('5238761', 'ETH'),
  ('5349618', 'ETH'),
  ('11788544', 'NOT'),
  ('962142', 'ETH'),
  ('7795297', 'ETH'),
  ('7341464', 'ETH'),
  ('9843236', 'KAT'),
  ('5594916', 'ETH'),
  ('1550003', 'ETH'),
]
Salin selepas log masuk

Keputusan yang Diingini:

result = [
  {
    'type': 'KAT',
    'items': ['11013331', '9843236']
  },
  {
    'type': 'NOT',
    'items': ['9085267', '11788544']
  },
  {
    'type': 'ETH',
    'items': ['5238761', '962142', '7795297', '7341464', '5594916', '1550003']
  },
]
Salin selepas log masuk

Penyelesaian:

Langkah 1: Buat Kamus

  • Gunakan collections.defaultdict untuk mencipta kamus dengan kekunci ialah jenis item dan nilai ialah senarai untuk menyimpan nilai.
  • Untuk setiap pasangan data, tambahkan nilai pada senarai yang sepadan dengan jenisnya.

Langkah 2: Tukar kepada Format Jangkaan

  • Tukar kamus kepada format yang dijangkakan dengan mengulangi itemnya dan mencipta kamus dengan kekunci 'jenis' dan 'item'.

Contoh Kod:

<code class="python">from collections import defaultdict

res = defaultdict(list)
for v, k in input:
    res[k].append(v)

output = [{'type': k, 'items': v} for k, v in res.items()]</code>
Salin selepas log masuk

Penyelesaian Alternatif menggunakan itertools.groupby:

Nota: Pendekatan ini memerlukan input untuk diisih.

  • Isih pasangan data berdasarkan jenisnya.
  • Gunakan itertools.groupby untuk mengumpulkan pasangan data mengikut jenis.
  • Lelar pada item yang dikumpulkan untuk dibuat format output yang diingini.

Contoh Kod:

<code class="python">from itertools import groupby, itemgetter

sorted_input = sorted(input, key=itemgetter(1))

groups = groupby(sorted_input, key=itemgetter(1))
output = [{'type': k, 'items': [x[0] for x in v]} for k, v in groups]</code>
Salin selepas log masuk

Nota pada Susunan Utama:

  • Dalam versi Python sebelum 3.7, susunan sisipan tidak dijamin untuk kamus. Untuk memastikan pesanan konsisten dengan input, gunakan collections.OrderedDict.
  • Dalam Python 3.7 dan lebih baharu, kamus mengekalkan susunan sisipan secara lalai.

Atas ialah kandungan terperinci Berikut ialah tajuk yang sesuai untuk artikel anda, dengan mengambil kira format soalan: Cara Menghimpunkan Pasangan Data mengikut Jenis dalam Python: Penyelesaian Cekap dengan `defaultdict` dan `itertools.groupby`. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan