如何保持词典中项目的顺序?

2024-04-28 21:55:33 发布

您现在位置:Python中文网/ 问答频道 /正文

代码:

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()在此代码中不起作用?你知道吗


Tags: 代码importoscurrentcollectionsordereddictparameterspower
3条回答

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

Parameters = collections.OrderedDict()

然后继续使用变量名并创建一个普通的dict,它不保持顺序。你知道吗

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

你应该把每一个变量每行加一个。你知道吗

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

等等。你知道吗

在以下行:

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

Parameters不是一个有序的dict,而是一个简单的dict。 只需将其更改为以下内容:

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

您替换了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')])

相关问题 更多 >