Seite 1 von 1

Keys einer Dict umbenennen

Verfasst: Samstag 5. Mai 2007, 16:17
von koukoun
Hallo,

ich versuche seit einer Stunde, die Keys der MTestNames durch die von ADNames zu erstezen. Das klappt irgendwie nicht.

Kann jemand mir weiterhelfen?

Code: Alles auswählen

MTestNames = {
'V_ReverseDrivingSwitch': [0, 1],
'V_GearSelectorRPosition': [0, 0],
'V_GearSelectorOld': [1, 1],
'V_Kl15Bus': [0, 1],
'V_Kl15HW': [0, 0]
}
ADNames = [ "a", "b", "c", "d", "e"]

for i in range(len(MTestNames)):
    MTestNames.keys()[i]= ADNames[i]
Die Keys in MTestNames werden nicht umbenannt... :-(

Edit (Leonidas): Code in Python-Tags gesetzt.

Verfasst: Samstag 5. Mai 2007, 16:29
von Leonidas
Zuersteinmal: Ich habe deinen COde in Tags gesetzt. Mach das in Zukunft bitte selbst.

Das geht so nicht, weil die Keys in MTestNames keine Reihenfolge haben. Du müsstest ADNames eher so definieren:

Code: Alles auswählen

ADNames = {
    'V_ReverseDrivingSwitch' : 'a',
    'V_GearSelectorRPosition' : 'b',
    'V_GearSelectorOld' : 'c',
    'V_Kl15Bus' : 'd',
    'V_Kl15HW' : 'e'
}

MTestNames = {
    'V_ReverseDrivingSwitch': [0, 1],
    'V_GearSelectorRPosition': [0, 0],
    'V_GearSelectorOld': [1, 1],
    'V_Kl15Bus': [0, 1],
    'V_Kl15HW': [0, 0]
}

for old_name, new_name in ADNames.iteritems():
    MTestNames[new_name] = MTestNames[old_name]
    del MTestNames[old_name]
(ungetestet, als dem Kopf zusammengeschrieben)