Chcę zmienić klucz pozycji w słowniku Python.
Czy istnieje prosty sposób, aby to zrobić?
Chcę zmienić klucz pozycji w słowniku Python.
Czy istnieje prosty sposób, aby to zrobić?
Odpowiedzi:
Łatwo zrobić w 2 krokach:
dictionary[new_key] = dictionary[old_key]
del dictionary[old_key]
Lub w 1 kroku:
dictionary[new_key] = dictionary.pop(old_key)
który podniesie, KeyError
jeśli nie dictionary[old_key]
jest zdefiniowany. Zauważ, że to będzie usunąć 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)
uniknąć
old_key
będzie inna niż pozycja new_key
.
jeśli chcesz zmienić wszystkie klucze:
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}
jeśli chcesz zmienić pojedynczy klucz: możesz przejść do dowolnej z powyższych sugestii.
{ d1[key] : value for key, value in d.items() }
W Pythonie 2.7 i nowszych możesz używać rozumienia słownikowego: Oto przykład, który napotkałem podczas czytania pliku CSV przy użyciu DictReadera. Użytkownik sufikował wszystkie nazwy kolumn sufiksem „:”
ori_dict = {'key1:' : 1, 'key2:' : 2, 'key3:' : 3}
pozbyć się końcowego „:” w klawiszach:
corrected_dict = { k.replace(':', ''): v for k, v in ori_dict.items() }
Ponieważ klucze służą do wyszukiwania wartości w słownikach, nie można ich tak naprawdę zmienić. Najbliższe, co możesz zrobić, to zapisać wartość powiązaną ze starym kluczem, usunąć go, a następnie dodać nowy wpis z kluczem zastępczym i zapisaną wartością. Kilka innych odpowiedzi ilustruje różne sposoby osiągnięcia tego celu.
Aby przekonwertować wszystkie klucze w słowniku
Załóżmy, że to jest twój słownik:
>>> sample = {'person-id': '3', 'person-name': 'Bob'}
Aby przekonwertować wszystkie myślniki na podkreślenia w przykładowym kluczu słownika:
>>> sample = {key.replace('-', '_'): sample.pop(key) for key in sample.keys()}
>>> sample
>>> {'person_id': '3', 'person_name': 'Bob'}
d = {1:2,3:4}
załóżmy, że chcemy zmienić klucze do elementów listy p = ['a', 'b']. zrobi następujący kod:
d=dict(zip(p,list(d.values())))
i dostajemy
{'a': 2, 'b': 4}
W przypadku zmiany wszystkich kluczy jednocześnie. Tutaj pobieram klucze.
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
Nie widziałem tej dokładnej odpowiedzi:
dict['key'] = value
Możesz to nawet zrobić, aby sprzeciwić się atrybutom. Przekształć je w słownik, wykonując następujące czynności:
dict = vars(obj)
Następnie możesz manipulować atrybutami obiektu, tak jak w słowniku:
dict['attribute'] = value