python中的凌乱字典输出

时间:2013-10-19 19:48:57

标签: python dictionary output reverse

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

输入:

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'}

感谢任何助手

3 个答案:

答案 0 :(得分:1)

使用OrderedDict模块中的collectionshttp://docs.python.org/2/library/collections.html#collections.OrderedDict

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

答案 1 :(得分:0)

OrderedDict按照您指定的顺序保存内容。我经常发现它不是很有用,但如果你需要的话就使用它。

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

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

答案 2 :(得分:0)

使用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。