2016-03-17 274 views
2
a_lst = list() 
b_lst = list() 
tmp = list() 
c_dct = dict() 
while True: 
    a = raw_input("a=") 
    a_lst.append(a) 
    b = raw_input("b=") 
    b_lst.append(b) 
    if a == "end": 
     break 
a_lst.remove('end') 
print a_lst 
print b_lst 


for i in range(len(a_lst)): 
    c_dct[a_lst[i]] = b_lst[i] 


print c_dct 

在这段代码中,我组合了2个列表来创建字典。在结果中,字典与输入位置不同。 例如,创建Python字典

c_dct = {'q': 'w', 'e': 'r', 'o': 'p', '1': '2', '3': '4', '5': '6', 't': 'y', '7': '8', '9': '0', 'u': 'i'} 

,而不是

c_dct = {'1': '2', '3': '4', '5': '6','7': '8', '9': '0','q': 'w', 'e': 'r','t': 'y','u': 'i','o': 'p'} 

这是怎么回事的代码? 如何解决这个问题? 非常感谢!

+0

你为什么不检查'一==“结束”'* *前将其添加到该列表(或者在为此提出另一个“b”值之前)? – chepner

回答

5

字典是无序的设计。所以,一切都很好,你不能创建一个完美的字典。

下面是从Python documentation(5.5节)报价:

最好是认为字典作为无序组关键的:值对,该密钥是唯一的要求(在一本字典中)。

6

字典默认情况下不保持顺序。如果你需要一个有序字典,你可以使用以下命令:

from collections import OrderedDict 

看看在documentation