我使用selenium删除了一个表,它没有不同的标题和单元格,现在我遇到了一个我自己创建的附加列表,其首先包含标题名称,然后是所有值,例如:
list = [H1, H2, H3, ValueA1, ValueA2, ValueA3, ValueB1, ValueB2, ValueB3 ....]
我想要的输出是一个字典列表,它将前三个对象作为字典键,后三个作为字典值作为对象,依此类推。
谢谢
答案 0 :(得分:0)
虽然这是一个代码请求,但我会咬人:
In [3]: l = ['asdf', 'qwer', 1, 2, 3, 4, 5, 6, 7, 8]
In [4]: n_headers = 2
In [5]: [{k: v for k, v in zip(l[:n_headers], l[i:i + n_headers])}
for i in range(n_headers, len(l), n_headers)]
Out[5]:
[{'qwer': 2, 'asdf': 1},
{'qwer': 4, 'asdf': 3},
{'qwer': 6, 'asdf': 5},
{'qwer': 8, 'asdf': 7}]
这最终会使列表切片很多次,你可以用iter()
技巧来避免:
In [9]: g = zip(*[iter(l)] * 2)
In [10]: hdrs = next(g)
In [11]: hdrs
Out[11]: ('asdf', 'qwer')
In [12]: [{k: v for k, v in zip(hdrs, h)} for h in g]
Out[12]:
[{'qwer': 2, 'asdf': 1},
{'qwer': 4, 'asdf': 3},
{'qwer': 6, 'asdf': 5},
{'qwer': 8, 'asdf': 7}]
答案 1 :(得分:0)
不清楚这是否是您正在寻找的,但是对于“'”列表'词典:
i = 3
d={}
result=[]
while i < len(list): #Iterating over list
d[list[i%3]]=list[i]
i += 1
if (i%3==0): #Add to your list for every third element
result.append(d)
d={}
输出将与
一致[{'H2': 'ValueA2', 'H3': 'ValueA3', 'H1': 'ValueA1'}, {'H2': 'ValueB2', 'H3': 'ValueB3', 'H1': 'ValueB1'}]
答案 2 :(得分:0)
使用zip,iter的组合..假设3个标题..
lst = [ 'H1', 'H2', 'H3', 'ValueA1', 'ValueA2', 'ValueA3', 'ValueB1', 'ValueB2', 'ValueB3', 'ValueC1', 'ValueC2', 'ValueC3' ]
grps = list( zip(*([iter(lst)] * 3)) )
[ dict( zip( grps[0], grps[i]) ) for i in range(1,len(grps))]
输出:
[{'H1': 'ValueA1', 'H2': 'ValueA2', 'H3': 'ValueA3'},
{'H1': 'ValueB1', 'H2': 'ValueB2', 'H3': 'ValueB3'},
{'H1': 'ValueC1', 'H2': 'ValueC2', 'H3': 'ValueC3'}]