python - 使用 urllib 编码时保持 url 参数的顺序

标签 python dictionary get urllib

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

我注意到虽然字典的形式是:

{ "k1":"v1", "k2":"v2", "k3":"v3", .. }

在 urlencoding 之后,参数的顺序切换为:

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

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

最佳答案

正如您在评论中看到的那样,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 的更多信息

关于python - 使用 urllib 编码时保持 url 参数的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25107663/

相关文章:

python - Django limit_choices_to on OneToOneField 与上游外键字段

python - 是否可以在没有双重拆分的情况下从未解析的字符串列表构造字典理解?

python - .INI 文件中一个标题下的键、值

jquery - $.get(u,d,c ,"JSON") 与 $.getJSON(u,d,c)

python - 使用带有关键字参数的 map() 函数

Python 日期时间解析时区(RFC3339)

python - Pandas ,按计数过滤

Python - 从键列表访问分层字典元素

caching - redis在django-rest-framework中的get方法

get - 为什么在 GET FORMS 的操作 URL 上丢失查询参数是这样设计的?