0

我试图从字典中输出一些变量,但它没有按照我分配的顺序输出。我知道字典没有顺序,但我需要一本用于其他目的的字典,所以我不能使用列表。我想知道是否有一种方法可以使输出与我首先分配值的顺序相同。

输入:

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

感谢任何帮助者

4

3 回答 3

1

使用模块中OrderedDict的一个。http://docs.python.org/2/library/collections.html#collections.OrderedDictcollections

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

于 2013-10-19T19:53:06.433 回答
0

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

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

a = [('Name', 'Joe'), ('Age, '10')]
for element in a:
   print 'key {0}, value {1}'.format (element [0], element [1])
于 2013-10-19T19:53:19.137 回答
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。

于 2013-10-19T19:55:04.273 回答