>>> D = {'a': 1, 'b': 2, 'c': 3}
>>> D
{'a': 1, 'c': 3, 'b': 2}
Run Code Online (Sandbox Code Playgroud)
我只是在Python shell中做了这个,我只是想知道为什么键'c'会在键'b'之后?
我正在尝试构建一个url,以便我可以使用urllib模块向它发送get请求.
让我们假设我的final_url应该是
url = "www.example.com/find.php?data=http%3A%2F%2Fwww.stackoverflow.com&search=Generate+value"
Run Code Online (Sandbox Code Playgroud)
现在实现这一点我尝试了以下方式:
>>> initial_url = "http://www.stackoverflow.com"
>>> search = "Generate+value"
>>> params = {"data":initial_url,"search":search}
>>> query_string = urllib.urlencode(params)
>>> query_string
'search=Generate%2Bvalue&data=http%3A%2F%2Fwww.stackoverflow.com'
Run Code Online (Sandbox Code Playgroud)
现在,如果你将我query_string的格式与final_url你的格式比较,你可以观察两件事
1)params的顺序是反转而不是data=()&search=它search=()&data=
2)urlencode也编码+在Generate+value
我相信第一个变化是由于字典的随机行为.所以,我虽然OrderedDict用来反转字典.因为,我正在使用python 2.6.5我做的
pip install ordereddict
Run Code Online (Sandbox Code Playgroud)
但是当我尝试时,我无法在我的代码中使用它
>>> od = OrderedDict((('a', 'first'), ('b', 'second')))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'OrderedDict' is not defined
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是 …
result = {}
a = ["a","b","c"]
b = [1, 2, 3]
for i in range(3):
result[a[i]] = b[i]
print result
Run Code Online (Sandbox Code Playgroud)
我希望得到以下结果: {'a': 1, 'b': 2, 'c': 3}
但真正的是 {'a': 1, 'c': 3, 'b': 2}
是什么原因以及如何解决?