Chcę zmienić klucz pozycji w słowniku Python.
Czy istnieje prosty sposób, aby to zrobić?
python
dictionary
sequence
użytkownik469652
źródło
źródło
Odpowiedzi:
Łatwo zrobić w 2 krokach:
Lub w 1 kroku:
który podniesie,
KeyError
jeśli niedictionary[old_key]
jest zdefiniowany. Zauważ, że to będzie usunąćdictionary[old_key]
.źródło
dict[new_value] = dict.pop(old_value, some_default_value)
uniknąćold_key
będzie inna niż pozycjanew_key
.jeśli chcesz zmienić wszystkie klucze:
jeśli chcesz zmienić pojedynczy klucz: możesz przejść do dowolnej z powyższych sugestii.
źródło
{ d1[key] : value for key, value in d.items() }
pop'n'fresh
źródło
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() }
źródło
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.
źródło
Jeśli masz skomplikowany dykt, oznacza to, że dykt lub lista znajduje się w nim:
źródło
Nie ma bezpośredniego sposobu, aby to zrobić, ale możesz usunąć, a następnie przypisać
lub dokonaj masowych zmian klucza:
źródło
d = { changeKey(k): v for k, v in d.items()}
Aby przekonwertować wszystkie klucze w słowniku
Załóżmy, że to jest twój słownik:
Aby przekonwertować wszystkie myślniki na podkreślenia w przykładowym kluczu słownika:
źródło
załóżmy, że chcemy zmienić klucze do elementów listy p = ['a', 'b']. zrobi następujący kod:
i dostajemy
źródło
Możesz powiązać tę samą wartość z wieloma kluczami lub po prostu usunąć klucz i ponownie dodać nowy klucz o tej samej wartości.
Na przykład, jeśli masz klucze-> wartości:
nie ma powodu, dla którego nie można dodawać,
purple->2
usuwaćred->1
ani dodawaćorange->1
źródło
W przypadku zmiany wszystkich kluczy jednocześnie. Tutaj pobieram klucze.
źródło
Nie widziałem tej dokładnej odpowiedzi:
Możesz to nawet zrobić, aby sprzeciwić się atrybutom. Przekształć je w słownik, wykonując następujące czynności:
Następnie możesz manipulować atrybutami obiektu, tak jak w słowniku:
źródło