Bagaimana untuk membalikkan kamus dengan nilai senarai dalam Python?

Patricia Arquette
Lepaskan: 2024-10-30 04:42:28
asal
864 orang telah melayarinya

How to invert a dictionary with list values in Python?

Menyongsangkan Kamus dengan Nilai Senarai

Tugas di tangan ialah menyongsangkan kamus yang nilainya adalah senarai, mengubahnya menjadi kamus di mana setiap nilai daripada kamus asal menjadi kunci dalam kamus baharu, dengan senarai kunci asal sebagai nilainya.

Memandangkan kamus indeks berikut:

index = {
    'Testfil2.txt': ['nisse', 'hue', 'abe', 'pind'],
    'Testfil1.txt': ['hue', 'abe', 'tosse', 'svend']}
Salin selepas log masuk

Kamus songsang yang dikehendaki akan kelihatan seperti ini:

inverse = {
    'nisse': ['Testfil2.txt'],
    'hue': ['Testfil2.txt', 'Testfil1.txt'],
    'abe': ['Testfil2.txt', 'Testfil1.txt'],
    'pind': ['Testfil2.txt'], 
    'tosse': ['Testfil1.txt'],
    'svend': ['Testfil1.txt']}
Salin selepas log masuk

Berikut ialah penyelesaian Pythonic yang menangani isu dengan senarai sebagai nilai:

<code class="python">inverse = {}
for k, v in index.items():
    for x in v:
        inverse.setdefault(x, []).append(k)</code>
Salin selepas log masuk

Penyelesaian ini berulang ke atas kamus asal, mengekstrak setiap pasangan nilai kunci dan unsur-unsurnya. Ia menggunakan kaedah setdefault() dalam kamus songsang yang baru dibuat, yang menyemak sama ada nilai (elemen daripada senarai) hadir sebagai kunci. Jika tidak, ia mencipta kunci baharu dengan senarai kosong sebagai nilainya. Jika kunci sudah wujud, ia menambahkan kunci asal yang sepadan dengan senarai sedia ada.

Dengan menggelungkan semua elemen dalam kamus asal, penyelesaian ini berjaya mencipta kamus terbalik dengan nilai pendua digabungkan dan kunci asal sebagai nilai .

Atas ialah kandungan terperinci Bagaimana untuk membalikkan kamus dengan nilai senarai dalam Python?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!