Python sözlüğündeki bir girişin anahtarını değiştirmek istiyorum.
Bunu yapmanın kolay bir yolu var mı?
Python sözlüğündeki bir girişin anahtarını değiştirmek istiyorum.
Bunu yapmanın kolay bir yolu var mı?
Yanıtlar:
2 adımda kolayca yapılır:
dictionary[new_key] = dictionary[old_key]
del dictionary[old_key]
Veya 1 adımda:
dictionary[new_key] = dictionary.pop(old_key)
KeyError
eğer dictionary[old_key]
tanımsızsa artacaktır . Bu Not olacaktır silin 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)
kaçınmak için kullanabilirsiniz
old_key
farklı olacaktır new_key
.
tüm tuşları değiştirmek istiyorsanız:
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}
tek anahtarı değiştirmek istiyorsanız: Yukarıdaki önerilerden herhangi biriyle gidebilirsiniz.
{ d1[key] : value for key, value in d.items() }
Python 2.7 ve daha yeni sürümlerde sözlük anlama özelliğini kullanabilirsiniz: Bu, bir DictReader kullanarak bir CSV okurken karşılaştığım bir örnektir. Kullanıcı tüm sütun adlarını ':' ile sonlandırdı
ori_dict = {'key1:' : 1, 'key2:' : 2, 'key3:' : 3}
tuşlarındaki sondaki ':' işaretinden kurtulmak için:
corrected_dict = { k.replace(':', ''): v for k, v in ori_dict.items() }
Anahtarlar sözlüklerin değerleri aramak için kullandığı şey olduğundan, bunları gerçekten değiştiremezsiniz. Yapabileceğiniz en yakın şey eski anahtarla ilişkili değeri kaydetmek, silmek, daha sonra yedek anahtar ve kaydedilen değerle yeni bir giriş eklemektir. Diğer cevapların birçoğu bunun gerçekleştirilebileceği farklı yolları göstermektedir.
Sözlükteki tüm tuşları dönüştürmek için
Diyelim ki bu sizin sözlüğünüz:
>>> sample = {'person-id': '3', 'person-name': 'Bob'}
Tüm tire işaretlerini örnek sözlük anahtarında alt çizgilere dönüştürmek için:
>>> sample = {key.replace('-', '_'): sample.pop(key) for key in sample.keys()}
>>> sample
>>> {'person_id': '3', 'person_name': 'Bob'}
d = {1:2,3:4}
anahtarları p = ['a', 'b'] liste öğelerine değiştirmek istediğimizi varsayalım. Aşağıdaki kod:
d=dict(zip(p,list(d.values())))
ve alırız
{'a': 2, 'b': 4}
Tüm anahtarların bir kerede değiştirilmesi durumunda. Burada anahtarları kökten atıyorum.
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
Bu tam cevabı görmedim:
dict['key'] = value
Bunu nesne özniteliklerine bile yapabilirsiniz. Bunu yaparak bunları sözlük haline getirin:
dict = vars(obj)
Ardından, nesne özelliklerini sözlükte olduğu gibi değiştirebilirsiniz:
dict['attribute'] = value