2016-08-11 4 views
0

Ich habe eine {} mit einem string -> list Beziehung, wie:Wie können Schlüssel im Wörterbuch aktualisiert werden?

'Something.Default.' : ['a=initiator', 'b=00:00:00'] 
'Something.Session.' : ['b=acceptor', 'c=7039'] 

ich das letzte .'Something.Default.' sollte sich 'Something.Default' fallen möchten Schlüssel ändern.

Dies ist offensichtlich falsch, aber es zeigt, was ich suche

for key in my_dictionary: 
    key = key[:-1] 

Wie kann ich über jede Taste durchlaufen und es ändern?

+0

Sind diese Tastenfolgen wie "Something.Default"? –

+0

@RoryDaulton Ja – JAM

+1

Können Sie die Quelle der Daten nicht reparieren, bevor Sie das Wörterbuch erstellen? –

Antwort

1

Sie sollen nicht ein veränderbares Objekt wie eine Liste oder Wörterbuch ändern, während über seinen Inhalt laufen, so sind Sie am besten ein neues Wörterbuch der Schaffung der entsprechenden Tasten zu modifizieren, wo nötig. Dies verwendet eine Ternärdatei, um den Schlüssel um ein Zeichen abzuschneiden, wenn er in einem Punkt endet ('.'), Andernfalls den ursprünglichen Schlüssel verwenden.

my_dictionary = {key[:-1] if key[-1] == '.' else key: value 
       for key, value in my_dictionary.iteritems()} # Python 2 

Das neue Wörterbuch ist my_dictionary zur alten Variablennamen zugewiesen.

3

Erstellen Sie einfach ein neues Wörterbuch mit den Änderungen.

orig_dict = {'foox': 'bar', 'bazx': 'bat'} 
new_dict = {key[:-1]: value for key, value in orig_dict.items()} 
1

erhalten jede Taste, neue Schlüssel mit der letzten . entfernt machen, dann werden die Daten übertragen und diese dict löschen.

for info in dict: 
    if info[-1]=='.': 
    dict[info[:-1]] = dict[info] 
    del dict[info] 
0

Morgan Thrapps Antwort war knallhart. aber hier ist eine kleine Modifikation

orig_dict = {key[:-1]: value for key, value in orig_dict.items()} 

Sie müssen kein neues dict-Objekt erstellen. Nur ein kleiner Aufräumjob.

+1

Dies sollte nur ein Kommentar zu seiner Antwort sein. – chepner

+0

Das stimmt. Ich habe es einfach so gemacht, um die Schritte zu durchbrechen, um es für die Leser klarer zu machen. –

+0

leider habe ich nicht genügend Reputation um zu kommentieren. Auf dem Weg nach oben –

Verwandte Themen