pozz wrote: > I have a dictionary where the keys are numbers: > > mydict = { 1: 1000, 2: 1500, 3: 100 } > > I would like to convert keys from number to string representation: > > mydict = { "apples": 1000, "nuts": 1500, "tables": 100 } > > Of course, somewhere I have the association between key-numbers and > key-strings, maybe in another dictionary: > > keydict = { 1: "apples", 2: "nuts", 3; "tables" } > > How could I make the conversion? My solution: > > keydict = { 1: "Joseph", 2: "Michael", 3: "John" } > mydict = { 1: 1000, 2: 2000, 3: 3000 } > newdict = {} > for k in mydict.keys(): > newdict.update({keydict[k]: mydict[k]}) > print(newdict)
This is the correct approach. You can spell it more elegantly (see Paul's answer), but > I tried changing just mydict (without creating newdict), without success. changing such a dict in place is hardly ever done by experienced Python programmers. assert len(keydict) == len(mydict) for k, v in keydict.items(): mydict[v] = mydict.pop(k) The code is less clear than mydict = {keydict[k]: v for k, v in mydict.items()} and you run the risk of ending up with corrupted data when you encounter a missing key halfway through the iteration. -- https://mail.python.org/mailman/listinfo/python-list