переименовывать ключи в словаре

Я хочу переименовать ключи словаря, которые являются ints, и мне нужно, чтобы они были ints с ведущими нулями, чтобы они сортировались правильно.

например, мои клавиши:

'1','101','11' 

и мне нужно, чтобы они были:

 '001','101','011' 

это то, что я делаю сейчас, но я знаю, что есть лучший способ

 tmpDict = {} for oldKey in aDict: tmpDict['%04d'%int(oldKey)] = aDict[oldKey] newDict = tmpDict 

Вы делаете это неправильно. Если вы хотите вывести записи из dict в отсортированном виде, вам нужно отсортировать его при извлечении.

 for k in sorted(D, key=int): print '%s: %r' % (k, D[k]) 

Вы можете сортировать любой желаемый ключ.

Так, например: sorted(mydict, key=int)

 aDict = dict((('%04d' % oldKey, oldValue) \ for (oldKey, oldValue) in aDict.iteritems())) 

… или %03d если вам нужны три цифры, как в вашем примере.