Python 如何基于项目计数调用列表中的所有列表项目

Python 如何基于项目计数调用列表中的所有列表项目,python,list,Python,List,我试图用Python编写一个简单的BruteForce,主要是为了测试我的Python知识。我有列表中的项目数,但我想让“brutedata”有相同数量的项目。以下是我的代码片段: while count < contentscount - 1: count = count + 1 brutedata = { postdata[0] : "admin", postdata[1] : contents[count] } brute = requests.post(ta

我试图用Python编写一个简单的BruteForce,主要是为了测试我的Python知识。我有列表中的项目数,但我想让“brutedata”有相同数量的项目。以下是我的代码片段:

while count < contentscount - 1:
    count = count + 1
    brutedata = { postdata[0] : "admin", postdata[1] : contents[count] }
    brute = requests.post(target, data=brutedata)
    bruteresponse = brute.text

您可以生成具有dict理解的词典:

brutedata = {'postdata[{}]'.format(i): v for i, v in enumerate(itemlist)}
这将生成一个包含N个键的字典,这些键名为
postdata[0]
postdata[1]
,…,
postdata[N]
,其值的顺序与输入的
itemlist
元素相同

此语法需要Python 2.7或更新版本;对于较旧版本,您可以将
dict()
构造函数与生成(键、值)对的生成器表达式一起使用:

演示:


考虑到字典没有固定的顺序;示例输出中,
postdata[0]
列在其他两个键之后,这是因为用于
dict

的底层哈希表的实现细节非常感谢,这正是我想要的。但是,我该如何为这些列表项中的每一项分配单独的值呢?由于我正在使用请求库,我需要创建POST数据,以便将其发送到服务器。示例brutedata={“username”:postdata[0],“password”:postdata[1]}@user2879373:一般来说,在这种情况下,您已经有了fieldname到value的映射。您首先是如何生成
postdata
的?postdata=raw_input(“Post data>”)postdata=postdata.split(“&”)postdata=[p.split(“=”,1)[0]for p in postdata]input>>username=asd&password=asd OUTPUT>>(postdata[0]=username,postdata[1]=password)@user2879373:使用,改为值对。@user2879373:这样可以保留键,并根据需要替换值。
brutedata = {'postdata[{}]'.format(i): v for i, v in enumerate(itemlist)}
brutedata = dict(('postdata[{0}]'.format(i), v) for i, v in enumerate(itemlist))
>>> itemlist = ['foo', 'bar', 'baz']
>>> {'postdata[{}]'.format(i): v for i, v in enumerate(itemlist)}
{'postdata[1]': 'bar', 'postdata[2]': 'baz', 'postdata[0]': 'foo'}
>>> dict(('postdata[{0}]'.format(i), v) for i, v in enumerate(itemlist))
{'postdata[1]': 'bar', 'postdata[2]': 'baz', 'postdata[0]': 'foo'}