从列表创建字典,其中包含标题作为元素

时间:2017-06-27 05:39:23

标签: python selenium dictionary

这里有一个新手刮刀,试图用废弃的桌子制作一本字典。

我使用selenium删除了一个表,它没有不同的标题和单元格,现在我遇到了一个我自己创建的附加列表,其首先包含标题名称,然后是所有值,例如:

list = [H1, H2, H3, ValueA1, ValueA2, ValueA3, ValueB1, ValueB2, ValueB3 ....]

我想要的输出是一个字典列表,它将前三个对象作为字典键,后三个作为字典值作为对象,依此类推。

谢谢

3 个答案:

答案 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'}]