Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana Anda Boleh Menyongsangkan Kamus dengan Nilai Senarai?

Bagaimana Anda Boleh Menyongsangkan Kamus dengan Nilai Senarai?

Linda Hamilton
Linda Hamiltonasal
2024-10-29 04:23:02770semak imbas

How Can You Invert a Dictionary with List Values?

Menyongsangkan Kamus dengan Nilai Senarai: Penyelesaian

Dalam artikel ini, kami meneroka cabaran menyongsangkan kamus dengan nilai senarai. Memandangkan kamus indeks dengan kunci ialah nama fail dan nilai ialah senarai perkataan yang muncul dalam fail tersebut, kami berhasrat untuk mencipta kamus songsang dengan perkataan adalah kunci dan nilai ialah senarai nama fail.

Fungsi penyongsangan yang disediakan, invert_dict, tidak boleh digunakan untuk kamus dengan nilai senarai sebagai kunci, kerana ia gagal dengan "TypeError: unhashable type: 'list'". Had ini berpunca daripada fakta bahawa kunci dalam kamus mesti boleh dicincang dan senarai tidak boleh dicincang.

Untuk mengatasi halangan ini, kami boleh menggunakan pendekatan tersuai yang berulang melalui kamus asal dan mencipta kamus baharu menggunakan setdefault . Khususnya, kami mengulangi senarai nilai setiap kunci dalam kamus asal dan menambah kunci yang sepadan sebagai nilai untuk perkataan tersebut dalam kamus songsang baharu.

Berikut ialah contoh pelaksanaan pendekatan ini:

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

Penyelesaian ini mengendalikan nilai senarai dalam kamus asal dengan menggunakan kaedah setdefault untuk mencipta senarai baharu jika kunci tidak wujud dalam kamus songsang, atau tambahkan pada senarai sedia ada jika kunci sudah ada.

Hasilnya, kami memperoleh kamus terbalik dengan perkataan adalah kunci dan nilai ialah senarai nama fail.

Atas ialah kandungan terperinci Bagaimana Anda Boleh Menyongsangkan Kamus dengan Nilai Senarai?. 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