我正在尝试一种优雅的方式来完成以下任务:
我有一个混合类型的列表,并希望“打破”其中一种类型的列表。例如,我可能有
['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分隔的块。如果有人能想到比我上面提出的更好的方法,那也会很棒!感谢。
答案 0 :(得分: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]})
答案 1 :(得分:0)
没有导入的解决方案:
$ 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]}