Saya ingin mengubah kunci entri dalam kamus Python.
Apakah ada cara mudah untuk melakukan ini?
python
dictionary
sequence
pengguna469652
sumber
sumber
Jawaban:
Mudah dilakukan dalam 2 langkah:
Atau dalam 1 langkah:
yang akan naik
KeyError
jikadictionary[old_key]
tidak ditentukan. Perhatikan bahwa ini akan dihapusdictionary[old_key]
.sumber
dict[new_value] = dict.pop(old_value, some_default_value)
untuk menghindari ituold_key
akan berbeda dengan posisinew_key
.jika Anda ingin mengubah semua kunci:
jika Anda ingin mengubah satu kunci: Anda dapat menggunakan salah satu dari saran di atas.
sumber
{ d1[key] : value for key, value in d.items() }
pop'n'fresh
sumber
Dalam python 2.7 dan lebih tinggi, Anda dapat menggunakan pemahaman kamus: Ini adalah contoh yang saya temui saat membaca CSV menggunakan DictReader. Pengguna telah mengakhiri semua nama kolom dengan ':'
ori_dict = {'key1:' : 1, 'key2:' : 2, 'key3:' : 3}
untuk menghilangkan jejak ':' di tombol:
corrected_dict = { k.replace(':', ''): v for k, v in ori_dict.items() }
sumber
Karena kunci adalah apa yang digunakan kamus untuk mencari nilai, Anda tidak dapat benar-benar mengubahnya. Hal terdekat yang dapat Anda lakukan adalah menyimpan nilai yang terkait dengan kunci lama, menghapusnya, lalu menambahkan entri baru dengan kunci pengganti dan nilai yang disimpan. Beberapa jawaban lain menggambarkan cara berbeda yang dapat dilakukan.
sumber
Jika Anda memiliki dict yang kompleks, itu artinya ada dict atau daftar dict tersebut:
sumber
Tidak ada cara langsung untuk melakukan ini, tetapi Anda dapat menghapus-kemudian-menetapkan
atau lakukan perubahan kunci massal:
sumber
d = { changeKey(k): v for k, v in d.items()}
Untuk mengonversi semua kunci dalam kamus
Misalkan ini kamus Anda:
Untuk mengonversi semua tanda hubung menjadi garis bawah pada kunci kamus sampel:
sumber
misalkan kita ingin mengubah kunci ke elemen daftar p = ['a', 'b']. kode berikut akan dilakukan:
dan kita dapatkan
sumber
Anda dapat mengaitkan nilai yang sama dengan banyak tombol, atau cukup menghapus kunci dan menambahkan kembali kunci baru dengan nilai yang sama.
Misalnya, jika Anda memiliki nilai keys->:
tidak ada alasan Anda tidak dapat menambah
purple->2
atau menghapusred->1
dan menambahorange->1
sumber
Dalam hal mengubah semua kunci sekaligus. Di sini saya membendung kunci.
sumber
Saya belum melihat jawaban persis ini:
Anda bahkan dapat melakukan ini pada atribut objek. Jadikan mereka menjadi kamus dengan melakukan ini:
Kemudian Anda dapat memanipulasi atribut objek seperti kamus Anda:
sumber