2016-07-15 116 views
0

字典,我有以下字典困惑在Python

commands = { 

'cmd1':"configure terminal", 

'cmd2':"router", 

'cmd3':"MPLS" 

} 

当我执行下面的代码:

`for cmd in commands: 
      print(cmd) 

我总是CMD3作为第1次印刷,这是为什么?

我做错了什么。

+1

字典是无序的;密钥的顺序取决于实施,并且在您插入或移除项目时可能会发生变化。 – dazedconfused

+0

如果要保留插入顺序,请使用OrderedDict。 – karakfa

回答

1

Python词典是无序的。当你遍历它们时,事物会以某种顺序出来,但顺序可能不会与你添加它们的顺序相同。这是设计。

如果您需要订购,您可以使用collections.orderedDict。或者,在这种情况下,由于密钥实际上不需要,只需使用一个列表即可。

+0

当我使用ordereddict时,cmd2总是排在第一位。 – Invictus

+0

你是如何初始化OrderedDict的?因为你不能只传递一个字典并期望它能够工作,所以你不得不使用类似于:OrderedDict([('cmd1',...),('cmd2',...),。 ..])' – Robin

0

要查看值是 - 使用排序的结果条目的列表:

for key,value in sorted(commands.items()): 
     print(key) 
     print(value) 
     print commands[key] # same as line above 
+0

给出错误:ValueError:太多值解压缩(预期2) – Invictus

+0

.iteritems()在那里丢失。我的错。 – dmitryro

+0

再次错误:AttributeError:'词典'对象没有属性'iteritems' – Invictus