声明字典时如何保留键的顺序
How to preserve the ordering of keys when declaring a dictionary
我的目标是在字典声明中保留键的顺序。我正在使用 collections.OrderedDict
但是当我 运行:
>>> modelConfigBase = OrderedDict({'FC':'*','EC':'*','MP':'*','LP':'*','ST':'*','SC':'*'})
顺序变更:
>>> modelConfigBase
OrderedDict([('EC', '*'), ('ST', '*'), ('FC', '*'), ('MP', '*'), ('LP', '*'), ('SC', '*')])
我做错了什么?
您传递给 OrderedDict
的字典是无序的。您需要传递一个有序的可迭代项。 . .
例如
modelConfigBase = OrderedDict([
('FC', '*'),
('EC', '*'),
('MP', '*'),
('LP', '*'),
('ST', '*'),
('SC', '*')])
请注意,在这种情况下(因为所有值都相同),看起来您可以使用更简单的方法:
modelConfigBase = OrderedDict.fromkeys(['FC', 'EC', 'MP', 'LP', 'ST', 'SC'], '*')
根据thefourtheye的反应,解决方案如下:
modelConfigBase = OrderedDict([('EC', '*'), ('ST', '*'), ('FC', '*'), ('MP', '*'), ('LP', '*'), ('SC', '*')])
我的目标是在字典声明中保留键的顺序。我正在使用 collections.OrderedDict
但是当我 运行:
>>> modelConfigBase = OrderedDict({'FC':'*','EC':'*','MP':'*','LP':'*','ST':'*','SC':'*'})
顺序变更:
>>> modelConfigBase
OrderedDict([('EC', '*'), ('ST', '*'), ('FC', '*'), ('MP', '*'), ('LP', '*'), ('SC', '*')])
我做错了什么?
您传递给 OrderedDict
的字典是无序的。您需要传递一个有序的可迭代项。 . .
例如
modelConfigBase = OrderedDict([
('FC', '*'),
('EC', '*'),
('MP', '*'),
('LP', '*'),
('ST', '*'),
('SC', '*')])
请注意,在这种情况下(因为所有值都相同),看起来您可以使用更简单的方法:
modelConfigBase = OrderedDict.fromkeys(['FC', 'EC', 'MP', 'LP', 'ST', 'SC'], '*')
根据thefourtheye的反应,解决方案如下:
modelConfigBase = OrderedDict([('EC', '*'), ('ST', '*'), ('FC', '*'), ('MP', '*'), ('LP', '*'), ('SC', '*')])