如何保留字典中的项目顺序?

时间:2014-02-21 09:24:02

标签: python python-2.7

代码:

import os
import collections

Parameters = collections.OrderedDict()
Parameters = {"current": '50mA', "voltage": '230', "resistance": '40 ohms'}                
Parameters["inductance"] = "37"
Parameters["power"] = "100 watt"

print Parameters

o/p:
{'current': '50mA', 'power': '100 watt', 'voltage': '230', 'inductance': '37', 'resistance': '40 ohms'}

为什么OrderedDict()在这段代码中没有用?

3 个答案:

答案 0 :(得分:3)

已替换您的OrderedDict对象:

Parameters = collections.OrderedDict()
Parameters = {"current": '50mA', "voltage": '230', "resistance": '40 ohms'}                

看到第二条=行?现在Parameters绑定到常规字典,而不是第一行的OrderedDict()

将元素按顺序作为一系列键值对传递:

Parameters = collections.OrderedDict(
    (("current", '50mA'), ("voltage", '230'), ("resistance", '40 ohms'))
)
Parameters["inductance"] = "37"
Parameters["power"] = "100 watt"

演示:

>>> import collections
>>> Parameters = collections.OrderedDict(
...     (("current", '50mA'), ("voltage", '230'), ("resistance", '40 ohms'))
... )
>>> Parameters["inductance"] = "37"
>>> Parameters["power"] = "100 watt"
>>> Parameters
OrderedDict([('current', '50mA'), ('voltage', '230'), ('resistance', '40 ohms'), ('inductance', '37'), ('power', '100 watt')])

答案 1 :(得分:2)

在以下行:

Parameters = {"current": '50mA', "voltage": '230', "resistance": '40 ohms'}

Parameters不是OrderedDict,而是一个简单的词典。 只需将其更改为以下内容:

Parameters["current"] ='50mA'
Parameters["voltage"] ='230'
Parameters["resistance"] ='40 ohms'

答案 2 :(得分:2)

因为你实际创建了两个对象。首先,您要创建OrderedDict:

Parameters = collections.OrderedDict()

然后你继续重复使用变量名并创建一个普通的dict,它不能保存订单。

Parameters = {"current": '50mA', "voltage": '230', "resistance": '40 ohms'} 

您应该每行添加一个变量。

Parameters = collections.OrderedDict()
Parameters["inductance"] = "37"
Parameters["power"] = "100 watt"

等等。