【问题标题】:Messy dictionary output in pythonpython中凌乱的字典输出
【发布时间】:2013-10-19 19:48:57
【问题描述】:

我正在尝试从字典中输出一些变量,但它没有按照我指定的顺序输出。 我知道字典没有顺序,但我需要一本用于其他目的的字典,所以我不能使用列表。我想知道是否有办法让输出的顺序与我最初分配值的顺序相同。

输入:

a = {'Name': "a", 'Date': 20021501, 'Time': 1800, 'Type': "JK", 'TG': 68, 'DC': 98}

输出:

{'TG': 68, 'DC': 98, 'Time': 1800, 'Date': 20021501, 'Type': 'JK', 'Name': 'a'}

感谢任何帮助

【问题讨论】:

标签: python dictionary output reverse


【解决方案1】:

使用来自collections 模块的OrderedDicthttp://docs.python.org/2/library/collections.html#collections.OrderedDict

如果不需要修改数据,也可以考虑namedtuplehttp://docs.python.org/2/library/collections.html#collections.namedtuple

【讨论】:

    【解决方案2】:

    使用 OrderedDict: http://docs.python.org/2/library/collections.html#collections.OrderedDict

    有序字典和普通字典一样,但它们 记住插入项目的顺序。当迭代一个 有序字典,项目按其键的顺序返回 是最先添加的。

    OrderedDict 的这个子类会记住条目最后插入的顺序:

    class LastUpdatedOrderedDict(OrderedDict):
        'Store items in the order the keys were last added'
    
        def __setitem__(self, key, value):
            if key in self:
                del self[key]
            OrderedDict.__setitem__(self, key, value)
    

    该链接还显示您可以获取普通字典,对其进行排序,并将其按顺序存储为 OrderedDict。

    【讨论】:

      【解决方案3】:

      OrderedDict 按照您分配的顺序保存事物。我不经常觉得这很有用,但如果你需要的话,请使用它。

      或者,如果您没有真正使用“字典”访问属性,请考虑仅在此处存储一个元组列表,即 2 元组,如果您不需要修改元组的任何一个成员。

      a = [('Name', 'Joe'), ('Age, '10')]
      for element in a:
         print 'key {0}, value {1}'.format (element [0], element [1])
      

      【讨论】:

        猜你喜欢
        • 2022-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-06
        • 2015-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多