Cari Terbalik dalam Kamus Python: Mendapatkan Kekunci Mengikut Nilai
Walaupun kamus Python menyediakan cara yang cekap untuk memetakan kunci kepada nilai yang sepadan, terdapat mungkin situasi di mana anda perlu melakukan carian terbalik. Ini boleh berguna untuk senario di mana anda mempunyai nilai dan perlu mencari kunci yang berkaitan.
Soalan:
Andaikan anda mempunyai kamus yang memetakan nama mengikut peringkat umur . Tugas anda adalah untuk mencipta fungsi yang mengambil umur sebagai input dan mengembalikan nama yang sepadan. Walau bagaimanapun, skrip anda menghadapi ralat KeyError dan anda sedang mencari bantuan dalam mengubah suai kod untuk mengendalikan kes ini.
Kod:
dictionary = {'george': 16, 'amber': 19} search_age = raw_input("Provide age") for age in dictionary.values(): if age == search_age: name = dictionary[age] print name
Penyelesaian:
Kod yang disediakan cuba untuk lelaran melalui nilai kamus dan membandingkannya dengan input umur. Jika padanan ditemui, kod tersebut cuba mendapatkan semula kunci padanan daripada kamus menggunakan kamus[umur], di mana KeyError berlaku.
Untuk melakukan carian terbalik dalam Python, kami boleh menggunakan dua kaedah:
Kaedah 1:
mydict = {'george': 16, 'amber': 19} print mydict.keys()[mydict.values().index(16)] # Prints george
Pendekatan ini melibatkan mendapatkan senarai semua kunci dan nilai menggunakan mydict.keys() dan mydict.values(), masing-masing. Kami kemudian menggunakan index() pada senarai nilai untuk mencari kedudukan umur input dan mendapatkan kunci pada kedudukan itu.
Kaedah 2 (Python 3.x):
mydict = {'george': 16, 'amber': 19} print(list(mydict.keys())[list(mydict.values()).index(16)]) # Prints george
Sama seperti kaedah pertama, pendekatan ini melibatkan penukaran kunci dan nilai kepada senarai. Walau bagaimanapun, ia memanfaatkan sintaks Python 3.x untuk memudahkan proses pengindeksan.
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan `KeyError` Apabila Melakukan Carian Terbalik dalam Kamus Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!