在字典中重命名键

3
我想重命名一个字典中的键,这些键是整数,我需要它们是带有前导零的整数,以便正确排序。
例如,我的键如下:
'1','101','11'

我需要它们是:
'001','101','011'

这是我现在正在做的事情,但我知道有更好的方法。
tmpDict = {}
  for oldKey in aDict:
 tmpDict['%04d'%int(oldKey)] = aDict[oldKey]
newDict = tmpDict

我很困惑。为什么数字排序不能用来对键进行排序?字典保证键没有排序顺序,因此更改键。 - Alan
1
为什么不将它们转换为数字呢?(如果需要,甚至可以将它们显示为二进制) - mmmmmm
3个回答

7

你的方法不正确。如果你想以排序的方式从字典中获取条目,那么你需要在提取时进行排序。

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

1

您可以使用任何键进行排序。

例如:sorted(mydict, key=int)


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

如果你需要像你的例子一样三位数字,可以使用%03d


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接