2016-05-22 53 views
0

我想尝试的一个优雅的方式做了以下任务:优雅的方式来分割的特定值列表

我有混合类型的列表,并想“突破”上的一个列表类型。例如,我可能有

['a', 1, 2, 3, 'b', 4, 5, 6] 

,我想返回类似

{'a': [1, 2, 3], 
'b': [4, 5, 6]} 

这样做的动机是:我有一个分裂如下

一些HTML数据
<div ...> ... </div> 
<table> ... </table> 
<table> ... </table> 

<div ...> ... </div> 
<table> ... </table> 
<table> ... </table> 
... 
<table> ... </table> 

我想组织成由div分隔的块。如果任何人都能想到比我上面提出的更好的方法,那将会很棒!谢谢。

+1

' '4', '5',“6''是相同的键入为'b'。 –

+0

没有有用的回应-.- 虽然编辑它,但 – ira

+0

要解析HTML数据,您可以使用BeautifulSoup模块。它有'findAll()'方法在HTML标签之间进行搜索。 –

回答

0

代码 -

from collections import defaultdict 

arr = ['a', 1, 2, 3, 'b', 4, 5, 6] 

d = defaultdict(list) 

cur_key = arr[0] 

for value in arr[1:]: 
    if type(value) != type(cur_key): 
     d[cur_key].append(value) 
    else: 
     cur_key = value 

print(d) 

输出 -

defaultdict(<class 'list'>, {'b': [4, 5, 6], 'a': [1, 2, 3]}) 
0

而不进口A液:

$ cat /tmp/tmp.py 
_dict = ['a', 1, 2, 3, 'b', 4, 5, 6] 
type_key = str 
out = dict() 
cur_key = "" 

for i in _dict: 
    if type(i) == type_key: 
     out[i] = list() 
     cur_key = i 
    else: 
     out[cur_key].append(i) 

print(out) 


$ python /tmp/tmp.py 
{'a': [1, 2, 3], 'b': [4, 5, 6]}