【发布时间】:2016-10-27 00:24:22
【问题描述】:
我需要发送HTTP POST 请求,数据如下:
data = {'id[]': '1', 'id[]': '2', 'id[]': '3'}
Values 列表实际上是未知的,但让它成为values_list = ['1', '2', '3']
当然可以试试
for value in values_list:
data["id[]"] = value
我得到{'id[]': '3'},因为每次迭代都会覆盖键值对...
我用this解决方案:
data = {}
class data_keys(object):
def __init__(self, data_key):
self.data_key = data_key
for value in values_list:
data[data_keys('id[]')] = value
但我的data 看起来像
{<__main__.data_keys object at 0x0000000004BAE518>: '2',
<__main__.data_keys object at 0x0000000004BAED30>: '1',
<__main__.data_keys object at 0x0000000004B9C748>: '3'}
我的代码有什么问题?我还能如何简单地用单键创建字典?
更新
这就是我的HTTP 请求的样子:
requests.post(url, data={"id[]": '1', "id[]": '2', "id[]": '3'}, auth=HTTPBasicAuth(user_name, user_passw))
标题更新
【问题讨论】:
-
您的意思是创建一个字典,其中同一个键出现多次?你不能,像
dict这样的哈希映射要求每个键只出现一次。 -
字典中的每个键都必须不同(不同的哈希)才能被访问,即:如果你有
d = {'a':1,'a':2},d['a']会是什么? -
对于所有评论的人来说,这个问题有点令人费解和误导,但它显然不是关于创建具有重复键的字典,而只是关于使用某种固定形式的序列化数据创建 HTTP 请求。第二个在技术上是可行的,而无需创建具有重复键的字典(这显然是不可能的)。为什么需要这种形式 - 我不确定,但据我们所知,我们可能会假设服务器已损坏 API 并且 OP 无法更改它...
-
我想您可能会发现帖子数据是一个带有值列表的id键,您可以分享链接吗?
-
@PadraicCunningham 是的,这很可能。那么,另一个XY Problem?
标签: python python-2.7 python-3.x dictionary python-requests