Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Mencantumkan Kamus dengan Kekunci Pendua dengan Cekap dan Mengumpul Nilainya?

Bagaimanakah Saya Boleh Mencantumkan Kamus dengan Kekunci Pendua dengan Cekap dan Mengumpul Nilainya?

Patricia Arquette
Lepaskan: 2024-12-24 15:29:12
asal
688 orang telah melayarinya

How Can I Efficiently Merge Dictionaries with Duplicate Keys and Collect Their Values?

Menggabungkan Kamus untuk Kekunci Pendua

Apabila bekerja dengan berbilang kamus yang mengandungi kekunci bertindih, adalah perlu untuk menggabungkannya dengan cekap sambil mengumpul nilai yang dikaitkan dengan kunci tersebut. Artikel ini meneroka penyelesaian untuk menggabungkan dan mengumpul nilai daripada kunci padanan dalam koleksi kamus.

Pernyataan Masalah

Memandangkan beberapa kamus seperti:

d1 = {key1: x1, key2: y1}
d2 = {key1: x2, key2: y2}
Salin selepas log masuk

Matlamatnya ialah untuk mendapatkan hasil gabungan sebagai kamus baharu, di mana setiap kekunci menyimpan satu tuple nilai daripada yang asal kamus:

d = {key1: (x1, x2), key2: (y1, y2)}
Salin selepas log masuk

Penyelesaian

Penyelesaian menggunakan collections.defaultdict untuk mencipta kamus dengan nilai lalai sebagai senarai boleh ubah. Ini membenarkan pengumpulan nilai untuk setiap kunci:

from collections import defaultdict

d1 = {1: 2, 3: 4}
d2 = {1: 6, 3: 7}

dd = defaultdict(list)

for d in (d1, d2): # Input dictionaries can be iterated over here
    for key, value in d.items():
        dd[key].append(value)
Salin selepas log masuk

Kamus gabungan terakhir dd mengandungi setiap kunci yang dipetakan ke senarai nilai daripada kamus input.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencantumkan Kamus dengan Kekunci Pendua dengan Cekap dan Mengumpul Nilainya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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