Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk mengalih keluar Kamus Pendua daripada Senarai dalam Python Semasa Memelihara Pesanan?

Bagaimana untuk mengalih keluar Kamus Pendua daripada Senarai dalam Python Semasa Memelihara Pesanan?

DDD
DDDasal
2024-11-26 11:05:11733semak imbas

How to Remove Duplicate Dictionaries from a List in Python While Preserving Order?

Mengalih Keluar Kamus Pendua dalam Senarai dalam Python

Apabila bekerja dengan senarai kamus, mungkin perlu mengalih keluar pendua berdasarkan kunci yang sama -pasangan nilai. Artikel ini akan memberikan panduan terperinci tentang cara mencapainya menggunakan fungsi terbina dalam Python dan pendekatan yang lebih cekap yang mengekalkan susunan kamus.

Menggunakan Set untuk Penyahduplikasi

Satu pendekatan melibatkan menukar setiap kamus kepada satu tuple barangnya. Memandangkan tupel boleh dicincang, ia boleh digunakan sebagai kunci dalam set untuk mengenal pasti kamus pendua. Kod Python berikut menunjukkan kaedah ini:

new_list = [dict(t) for t in {tuple(d.items()) for d in old_list}]

Kod ini berulang pada senarai asal kamus (senarai_lama) dan mencipta satu set tupel yang mewakili item dalam setiap kamus. Set secara automatik mengeluarkan pendua. Set yang terhasil kemudiannya ditukar kembali kepada senarai kamus menggunakan pemahaman kamus.

Memelihara Susunan dengan Logik Tersuai

Walau bagaimanapun, jika susunan kamus itu penting, kaedah di atas tidak akan memeliharanya. Untuk mencapai matlamat ini, pendekatan alternatif berikut disyorkan:

seen = set()
new_list = []
for d in old_list:
    t = tuple(sorted(d.items()))
    if t not in seen:
        seen.add(t)
        new_list.append(d)

Kod ini mencipta satu set tupel yang mewakili item yang dipesan dalam setiap kamus. Fungsi sorted() memastikan bahawa item berada dalam susunan yang konsisten. Set kemudian berfungsi untuk mengecualikan tupel pendua, dan senarai yang terhasil mengekalkan susunan kamus asal.

Mengendalikan Kamus Bersarang

Jika kamus mengandungi kamus bersarang, kod yang disediakan memerlukan sedikit pengubahsuaian untuk meratakan struktur bersarang. Coretan kod berikut menggambarkan ini:

def flatten_dict(d):
    new_d = {}
    for k, v in d.items():
        if isinstance(v, dict):
            v = flatten_dict(v)
            for k2, v2 in v.items():
                new_d[f'{k}.{k2}'] = v2
        else:
            new_d[k] = v
    return new_d

new_list = [dict(t) for t in {tuple(flatten_dict(d).items()) for d in old_list}]

Kesimpulan

Dalam artikel ini, kami telah meneroka dua cara untuk mengalih keluar kamus pendua daripada senarai dalam Python: menggunakan set untuk penyahduplikasian dan mengekalkan yang asal pesanan dengan logik tersuai. Pilihan kaedah bergantung pada keperluan khusus tugasan.

Atas ialah kandungan terperinci Bagaimana untuk mengalih keluar Kamus Pendua daripada Senarai dalam Python Semasa Memelihara Pesanan?. 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