【问题标题】:How to preserve the ordering of keys when declaring a dictionary声明字典时如何保留键的顺序
【发布时间】:2016-01-15 18:25:53
【问题描述】:

我的目标是在字典声明中保留键的顺序。我正在使用collections.OrderedDict,但是当我运行时:

>>> modelConfigBase = OrderedDict({'FC':'*','EC':'*','MP':'*','LP':'*','ST':'*','SC':'*'})

顺序变化:

>>> modelConfigBase
OrderedDict([('EC', '*'), ('ST', '*'), ('FC', '*'), ('MP', '*'), ('LP', '*'), ('SC', '*')])

我做错了什么?

【问题讨论】:

  • 字典一旦创建,就没有key ordereing。在您的情况下,已经创建的字典被传递给 OrderedDict
  • 交互式解释器中打印的 repr 值向您展示了如何创建对象。在这种情况下,请使用元组列表。

标签: python dictionary ordereddictionary


【解决方案1】:

您传递给OrderedDict 的字典是无序的。您需要传递 items 的有序迭代。 . .

例如

modelConfigBase = OrderedDict([
    ('FC', '*'),
    ('EC', '*'),
    ('MP', '*'),
    ('LP', '*'),
    ('ST', '*'),
    ('SC', '*')])

请注意,在这种情况下(因为所有值都相同),看起来您可以使用更简单的方法:

modelConfigBase = OrderedDict.fromkeys(['FC', 'EC', 'MP', 'LP', 'ST', 'SC'], '*')

【讨论】:

    【解决方案2】:

    根据fourtheye的响应,解决方案如下:

    modelConfigBase = OrderedDict([('EC', '*'), ('ST', '*'), ('FC', '*'), ('MP', '*'), ('LP', '*'), ('SC', '*')])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-26
      • 2020-08-10
      相关资源
      最近更新 更多