Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Menggabungkan Kamus Python dan Jumlah Nilai dengan Kecekapan untuk Kunci Biasa?

Bagaimanakah Saya Boleh Menggabungkan Kamus Python dan Jumlah Nilai dengan Kecekapan untuk Kunci Biasa?

Patricia Arquette
Patricia Arquetteasal
2024-12-11 16:22:15705semak imbas

How Can I Efficiently Merge Python Dictionaries and Sum Values for Common Keys?

Menggabungkan Kamus dalam Python: Menambah Nilai untuk Kekunci Bertindih

Apabila bekerja dengan berbilang kamus, selalunya perlu untuk menggabungkannya dengan cara yang bermakna . Satu senario biasa melibatkan penambahan nilai kunci yang muncul dalam kedua-dua kamus sambil mengekalkan kunci yang hanya wujud dalam satu.

Masalah:

Pertimbangkan kamus berikut:

Dict A: {'a': 1, 'b': 2, 'c': 3}
Dict B: {'b': 3, 'c': 4, 'd': 5}

Matlamatnya adalah untuk menggabungkan kamus ini supaya hasilnya ialah:

{'a': 1, 'b': 5, 'c': 7, 'd': 5}

Penyelesaian Menggunakan Collections.Counter:

Cara Pythonic dan cekap untuk mencapai ini adalah dengan menggunakan collections.Counter class. Ia merupakan subkelas dict yang menyediakan cara mudah untuk melakukan pengiraan berasaskan elemen, yang sesuai dengan tugas menggabungkan kamus.

from collections import Counter

A = Counter({'a':1, 'b':2, 'c':3})
B = Counter({'b':3, 'c':4, 'd':5})

Untuk menggabungkan kamus, kami hanya menambah objek Counter:

merged_dict = A + B

Hasilnya ialah objek Counter baharu, yang secara automatik menambah nilai untuk bertindih kunci:

merged_dict.most_common()
# Output: [('c', 7), ('b', 5), ('d', 5), ('a', 1)]

Menukarnya kepada kamus biasa adalah remeh:

merged_dict = dict(merged_dict)

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan Kamus Python dan Jumlah Nilai dengan Kecekapan untuk Kunci Biasa?. 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