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
Patricia Arquetteasal
2024-12-24 15:29:12691semak imbas

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}

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

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)

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!

Kenyataan:
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