2014-10-04 55 views
1

尝试使用列表中的值和某些格式填充python中的urllib请求的“数据”部分。使用函数填充发布请求的“数据”部分

说我有这样的[1492, 1493, 1493, ...]

名单,我想这两个值进入如下:

data = ({ 
    'c_id': '458', 
    'state': 'live', 
    'spec_ids[]': '1492', 
    'spec_ids[]': '1493', 
    'spec_ids[]': '1494', 
    'spec_ids[]': '...', 
    'allow_undo': 'true', 
    'flash': 'False' 
    }) 

,他们必须有'spec_ids[]': '####'

格式有什么最简单/最好的方式呢?

我希望解决方案具有可扩展性,这样当列表变长时,它会继续向提交的数据添加值。

任何和所有的帮助表示赞赏。我真的被困在这里,并尝试了许多不同的事情,都失败了。

+0

字典不能有重复的键。 – falsetru 2014-10-04 03:27:26

回答

2

字典不能有重复值,但urllib.urlencode接受任何可迭代对象,所以我们可以使用列表来实现我们需要的功能。

import urllib 

data = [ 
    ('c_id', '458'), 
    ('state', 'live'), 
    ('flash', 'False') 
] + [ ('spec_ids[]',str(x)) for x in [1492, 1493, 1493] ] 

print urllib.urlopen("http://stackoverflow.com/",urllib.urlencode(data)).read() 

这使用列表生成器从我们的数据列表中创建'spec_ids[]'字段。请注意,由于使用了urlopen的数据参数,这将成为POST请求。

+1

+1我完全错过了OP要求'urllib'解决方案的部分。睡觉时间我想.. – Borodin 2014-10-04 04:28:01

+0

这工作完美!谢谢! – roliv 2014-10-04 04:54:50