当使用python请求获取方法时,没有params排序降序

时间:2016-12-09 12:02:54

标签: python python-requests

我正在使用python请求。我不希望params遵循降序。

例如。

In  []:  import requests
         payload = {'key2': 'value1', 'key3': ['value', 'value3']}
         r = requests.get("http://httpbin.org/get", params=payload)
         print r.url

out []:  http://httpbin.org/get?key3=value&key3=value3&key2=value1

我想要的是http://httpbin.org/get?key2=value1&key3=value&key3=value3

1 个答案:

答案 0 :(得分:1)

尽管params顺序没有区别,但您始终可以使用OrderedDict,如下所示:

from collections import OrderedDict
pl = OrderedDict()
pl['key2'] = 'value1'
pl['key3'] = ['value', 'value3']
r = requests.get("http://httpbin.org/get", params=pl)

print r.url  # http://httpbin.org/get?key2=value1&key3=value&key3=value3

请注意,你应该在} 之后添加项目,因为构造函数在初始化期间将params视为常规字典,不保留键顺序。