2015-10-11 78 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