Inti dari kamus adalah pencariannya cepat, tetapi Anda tidak menggunakannya meskipun keyMapping Anda sudah menjadi kamus. Mari kita lihat kode Anda
prettyDict = {} for mkey, mval in keyMapping.items(): for ukey in uglyDict.keys(): if mkey == ukey: prettyDict[mval] = uglyDict[mkey]Bahkan jika uglyDict kecil, Anda mengulangi semua elemen pemetaan kunci. Ini tampaknya menjadi titik awal yang buruk, jadi mari kita balikkan kedua putaran itu
prettyDict = {} for ukey in uglyDict.keys(): for mkey, mval in keyMapping.items(): if mkey == ukey: prettyDict[mval] = uglyDict[mkey] _Di baris terakhir, mkey_ sama dengan prettyDict = {} for ukey in uglyDict.keys(): for mkey, mval in keyMapping.items(): if mkey == ukey: prettyDict[mval] = uglyDict[mkey] 0, sehingga kita dapat mengubahnya menjadi prettyDict = {} for ukey in uglyDict.keys(): for mkey, mval in keyMapping.items(): if mkey == ukey: prettyDict[mval] = uglyDict[mkey] 1, dan tentu saja Anda tahu cara menghindari pencarian itu sama sekali
prettyDict = {} for ukey, uval in uglyDict.items(): for mkey, mval in keyMapping.items(): if mkey == ukey: prettyDict[mval] = uval _Sekarang mari kita berkonsentrasi pada bagian tengah
for mkey, mval in keyMapping.items(): if mkey == ukey:Di sini kita mencari nilai prettyDict = {} for ukey in uglyDict.keys(): for mkey, mval in keyMapping.items(): if mkey == ukey: prettyDict[mval] = uglyDict[mkey] 0 di keyMapping, tapi tentunya untuk itulah kamus dan kita tidak perlu mengulangi semua item untuk melakukannya
prettyDict = {} for ukey, uval in uglyDict.items(): if ukey in keyMapping: mval = keyMapping[ukey] prettyDict[mval] = uvalIni jauh lebih baik. Dari sini, kita dapat merumuskan ulang ini menggunakan pemahaman kamus seperti dalam jawaban ggorien, jika Anda menginginkannya
prettyDict = { keyMapping[ukey]: uval for ukey, uval in uglyDict.items() if ukey in keyMapping } _Lebih penting lagi, Anda harus memutuskan bagaimana menangani kasus yang prettyDict = {} for ukey in uglyDict.keys(): for mkey, mval in keyMapping.items(): if mkey == ukey: prettyDict[mval] = uglyDict[mkey] 0 tidak ada di keyMapping. (Contoh Anda sepertinya salah dengan prettyDict = {} for ukey in uglyDict.keys(): for mkey, mval in keyMapping.items(): if mkey == ukey: prettyDict[mval] = uglyDict[mkey] 6, btw. ) Jika ini akan menjadi kesalahan, hilangkan saja prettyDict = {} for ukey in uglyDict.keys(): for mkey, mval in keyMapping.items(): if mkey == ukey: prettyDict[mval] = uglyDict[mkey] 7 dan tangani pengecualian di tempat lain. Atau mungkin Anda ingin menyimpan kunci asli dalam kasus itu
Contoh pertama menunjukkan cara mengganti nama kunci kamus tanpa mempertahankan urutan dalam kamus
Kamus mempertahankan urutan penyisipan kunci yang dimulai dengan Python v3. 7
Kami pertama kali menggunakan metode dict.pop()_ untuk menghapus kunci lama dari kamus
Metode dict.pop()_ menghapus kunci kamus yang ditentukan dan mengembalikan nilai yang sesuai
Metode dict.pop()_ juga dapat diberikan argumen kedua - nilai default yang akan dikembalikan jika kunci yang ditentukan tidak ada dalam kamus
Jika Anda tidak memberikan nilai default dan kuncinya tidak ada dalam kamus, KeyError akan dimunculkan
Karena metode dict.pop() mengembalikan nilai yang dihapus, yang harus kita lakukan adalah menggunakan notasi braket untuk menetapkan kunci baru dengan nilai yang ditentukan ke kamus
Namun, saat menggunakan pendekatan ini, urutan kunci dalam kamus tidak dipertahankan
Anda dapat menggunakan pemahaman dict jika Anda perlu mempertahankan urutan kunci kamus
Ganti nama Kunci kamus menggunakan pemahaman dict
Untuk mengganti nama kunci kamus
- Gunakan pemahaman dict untuk mengulangi item kamus
- Periksa apakah kunci saat ini sama dengan kunci yang akan diganti
- Jika kondisi terpenuhi, kembalikan kunci baru, jika tidak, kembalikan kunci saat ini
Metode ini mengembalikan tampilan baru item kamus (pasangan (kunci, nilai))
Kami menggunakan pemahaman dikt untuk mengulangi objek tampilan
Pemahaman dict sangat mirip dengan pemahaman daftar
Mereka melakukan beberapa operasi untuk setiap pasangan nilai kunci dalam kamus atau memilih subset dari pasangan nilai kunci yang memenuhi syarat
Pada setiap iterasi, kami memeriksa apakah kunci saat ini adalah yang akan diganti dan mengembalikan nama kunci baru jika kondisinya terpenuhi
Jika kondisi tidak terpenuhi, kami mengembalikan kunci apa adanya
Atau, Anda dapat menggunakan for loop
Ganti nama Kunci kamus menggunakan for loop
Untuk mengganti nama kunci kamus
- Gunakan loop for untuk mengulangi item kamus
- Periksa apakah setiap kunci adalah yang akan diganti
- Jika kondisi terpenuhi, tetapkan kunci baru ke kamus baru
- Jika tidak, tetapkan kunci saat ini ke kamus baru
Kami menggunakan for loop untuk mengulangi item kamus
Pada setiap iterasi, kami memeriksa apakah kunci saat ini yang akan diganti
Jika kondisi terpenuhi, kami menetapkan kunci baru ke kamus baru, jika tidak, kami menetapkan kunci saat ini
Pendekatan ini juga mempertahankan urutan kunci dalam kamus
Pendekatan mana yang Anda pilih adalah masalah preferensi pribadi. Saya akan menggunakan pemahaman dict karena menurut saya cukup langsung dan mudah dibaca