переименовать ключи в словаре - PullRequest
3 голосов
/ 15 июня 2010

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

например, мои ключи похожи на:

'1','101','11'

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

'001','101','011'

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

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

Ответы [ 3 ]

7 голосов
/ 15 июня 2010

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

for k in sorted(D, key=int):
  print '%s: %r' % (k, D[k])
1 голос
/ 15 июня 2010

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

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

0 голосов
/ 15 июня 2010
aDict = dict((('%04d' % oldKey, oldValue) \
             for (oldKey, oldValue) in aDict.iteritems()))

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...