2010-06-14 60 views
3

我想重命名字典的键是整数,我需要它们与前导零的整数,以便它们正确排序。重命名字典中的键

例如我的钥匙是这样的:

'1','101','11' 

,我需要他们:

'001','101','011' 

这是林现在正在做的,但我知道有一个更好的办法

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

我很困惑。为什么数字排序不能对键进行排序?字典保证没有按键的排序顺序,所以更改密钥。 – Alan 2010-06-14 20:38:50

+1

为什么不将它们转换为数字? (如果需要,你甚至可以将它们显示为二进制) – Mark 2010-06-14 20:41:07

回答

7

你会了解它的错误的方式。如果你想以分类的方式从字典中提取条目,那么你需要在提取时进行排序。

for k in sorted(D, key=int): 
    print '%s: %r' % (k, D[k]) 
0
aDict = dict((('%04d' % oldKey, oldValue) \ 
      for (oldKey, oldValue) in aDict.iteritems())) 

...或%03d i如果你的例子中你需要三位数字。

1

你可以用你想要的任何键进行排序。

因此,举例来说:sorted(mydict, key=int)