Saya ingin mengubah kunci entri dalam kamus Python.
Apakah ada cara mudah untuk melakukan ini?
Saya ingin mengubah kunci entri dalam kamus Python.
Apakah ada cara mudah untuk melakukan ini?
Jawaban:
Mudah dilakukan dalam 2 langkah:
dictionary[new_key] = dictionary[old_key]
del dictionary[old_key]
Atau dalam 1 langkah:
dictionary[new_key] = dictionary.pop(old_key)
yang akan naik KeyError
jika dictionary[old_key]
tidak ditentukan. Perhatikan bahwa ini akan dihapus dictionary[old_key]
.
>>> dictionary = { 1: 'one', 2:'two', 3:'three' }
>>> dictionary['ONE'] = dictionary.pop(1)
>>> dictionary
{2: 'two', 3: 'three', 'ONE': 'one'}
>>> dictionary['ONE'] = dictionary.pop(1)
Traceback (most recent call last):
File "<input>", line 1, in <module>
KeyError: 1
dict[new_value] = dict.pop(old_value, some_default_value)
untuk menghindari itu
old_key
akan berbeda dengan posisi new_key
.
jika Anda ingin mengubah semua kunci:
d = {'x':1, 'y':2, 'z':3}
d1 = {'x':'a', 'y':'b', 'z':'c'}
In [10]: dict((d1[key], value) for (key, value) in d.items())
Out[10]: {'a': 1, 'b': 2, 'c': 3}
jika Anda ingin mengubah satu kunci: Anda dapat menggunakan salah satu dari saran di atas.
{ d1[key] : value for key, value in d.items() }
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() }
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.
Untuk mengonversi semua kunci dalam kamus
Misalkan ini kamus Anda:
>>> sample = {'person-id': '3', 'person-name': 'Bob'}
Untuk mengonversi semua tanda hubung menjadi garis bawah pada kunci kamus sampel:
>>> sample = {key.replace('-', '_'): sample.pop(key) for key in sample.keys()}
>>> sample
>>> {'person_id': '3', 'person_name': 'Bob'}
d = {1:2,3:4}
misalkan kita ingin mengubah kunci ke elemen daftar p = ['a', 'b']. kode berikut akan dilakukan:
d=dict(zip(p,list(d.values())))
dan kita dapatkan
{'a': 2, 'b': 4}
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->:
red->1
blue->2
green->4
tidak ada alasan Anda tidak dapat menambah purple->2
atau menghapus red->1
dan menambahorange->1
Dalam hal mengubah semua kunci sekaligus. Di sini saya membendung kunci.
a = {'making' : 1, 'jumping' : 2, 'climbing' : 1, 'running' : 2}
b = {ps.stem(w) : a[w] for w in a.keys()}
print(b)
>>> {'climb': 1, 'jump': 2, 'make': 1, 'run': 2} #output
Saya belum melihat jawaban persis ini:
dict['key'] = value
Anda bahkan dapat melakukan ini pada atribut objek. Jadikan mereka menjadi kamus dengan melakukan ini:
dict = vars(obj)
Kemudian Anda dapat memanipulasi atribut objek seperti kamus Anda:
dict['attribute'] = value