2015-10-11 77 views
2

我在列表中具有下面的字符串,并且已经能够使用列表作为字典中的键并分配缺省值''来创建字典。当我打印时,我看到字典是按照与列表中的字符串相反的顺序创建的。为什么会发生这种情况,以及如何纠正它。是否需要反向语法?Python - 使用列表创建字典

a = ['hello','bye','tc','iam'] 
created_dict = dict((bl,'') for bl in a) 
print created_dict # {'iam': '', 'bye': '', 'hello': '', 'tc': ''} 

什么需要改变以得到下面的结果。

expected result : {'hello': '', 'bye': '', 'tc': '', 'iam': ''} 

它维持秩序时数在列表中使用

+0

你确定你需要它有序?如果是这样,字典不是你想要的数据结构。列表或链接列表可能会更好。 –

回答

2

在Python正字典没有键顺序的概念,你需要一个OrderedDict

from collections import OrderedDict 
o = OrderedDict.fromkeys(['hello', 'bye', 'tc', 'iam'], '')      
repr(o) 
OrderedDict([('hello', ''), ('bye', ''), ('tc', ''), ('iam', '')]) 
+0

“你需要一个OrderedDict” - 更可能的是,顺序是不必要的,使用OrderedDict只会鼓励在面对字典修改时试图保持特定顺序的不必要的麻烦。 – user2357112

+0

这有帮助。谢谢 !!! – automationlearner