如何按顺序将列表添加到字典?

时间:2016-11-09 19:10:23

标签: python python-3.x dictionary

示例字典:

dictionary = {}
dictionary['a'] = 1
dictionary['b'] = 2
dictionary['c'] = 3
dictionary['d'] = 4
dictionary['e'] = 5
print(dictionary)

第一次运行此代码:

{'c': 3, 'd': 4, 'e': 5, 'a': 1, 'b': 2}

第二

{'e': 5, 'a': 1, 'b': 2, 'd': 4, 'c': 3}

第三

{'d': 4, 'a': 1, 'b': 2, 'e': 5, 'c': 3}

我的预期结果:

{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

或者我的代码是:

dictionary = {}
dictionary['r'] = 150
dictionary['j'] = 240
dictionary['k'] = 98
dictionary['l'] = 42
dictionary['m'] = 57
print(dictionary)
#The result should be
{'r': 150, 'j': 240, 'k': 98, 'l': 42, 'm': 57}

由于我的项目,带有100个++列表的字典将写入文件,并且更容易阅读。

P.S。抱歉我的英语,如果我的问题标题不清楚。

谢谢。

2 个答案:

答案 0 :(得分:3)

Python dict本质上是无序的。要维护插入元素的顺序,请使用collection.OrderedDict()

示例运行:

>>> from collections import OrderedDict

>>> dictionary = OrderedDict()
>>> dictionary['a'] = 1
>>> dictionary['b'] = 2
>>> dictionary['c'] = 3
>>> dictionary['d'] = 4
>>> dictionary['e'] = 5

# first print
>>> print(dictionary)
OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)])

# second print, same result
>>> print(dictionary)
OrderedDict([('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)])

要将其写入json文件,可以使用string将dict对象转储到json.dumps(),如下所示:

>>> import json

>>> json.dumps(dictionary)  # returns JSON string
'{"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}' 

根据collections.OrderedDict() document

  

返回一个dict子类的实例,支持通常的dict方法。 OrderedDict是一个dict,它记住了第一次插入键的顺序。如果新条目覆盖现有条目,则原始插入位置保持不变。删除一个条目并重新插入它将把它移到最后。

答案 1 :(得分:1)

阅读OrderedDict

https://docs.python.org/2/library/collections.html#collections.OrderedDict

它会记住按键的插入顺序。