使用urllib进行编码时,保持url参数的顺序

时间:2014-08-03 18:15:27

标签: python dictionary get urllib

我正在尝试使用python模拟get请求。我有一个参数字典,我使用urllib.urlencode来urlencode他们

我注意到虽然字典的格式如下:

{ "k1":"v1", "k2":"v2", "k3":"v3", .. }
在urlencoding后,参数的顺序切换为:

/?k1=v1&k3=v3%k2=v2...

为什么会发生这种情况,我可以强制字典中的顺序保持不变吗?

1 个答案:

答案 0 :(得分:6)

正如您在评论中看到的那样,Python字典不是有序的,但Python中有一个OrderedDict可用于实现您想要的结果:

from collections import OrderedDict
import urllib
urllib.urlencode(OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')]))
# Out: 'k1=v1&k2=v2&k3=v3'

有关OrderedDIct

的更多信息