【问题标题】:rename keys in a dictionary重命名字典中的键
【发布时间】:2010-06-15 04:52:39
【问题描述】:

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

例如我的钥匙是这样的:

'1','101','11'

我需要他们是:

'001','101','011'

这是我现在正在做的,但我知道有更好的方法

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

【问题讨论】:

  • 我很困惑。为什么数字排序不能对键进行排序?字典保证键没有排序顺序,因此更改键。
  • 为什么不把它们转换成数字呢? (如果需要,您甚至可以将它们显示为二进制)

标签: python dictionary


【解决方案1】:

你走错路了。如果您想以排序方式从字典中提取条目,则需要在提取时进行排序。

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

【讨论】:

    【解决方案2】:

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

    所以,例如:sorted(mydict, key=int)

    【讨论】:

      【解决方案3】:
      aDict = dict((('%04d' % oldKey, oldValue) \
                   for (oldKey, oldValue) in aDict.iteritems()))
      

      ...或%03d,如果您需要三位数,如您的示例所示。

      【讨论】:

        猜你喜欢
        • 2013-05-04
        • 1970-01-01
        • 2016-09-23
        • 2022-01-17
        • 1970-01-01
        • 1970-01-01
        • 2015-06-10
        • 2020-11-12
        • 2021-10-08
        相关资源
        最近更新 更多