我在python中有一个基本问题。我有这个清单:
['[A]',a,b,c,x,y,'[B]',d,f,'[C]',g,h,e]
我想将其转换成字典:
{A:[a,b,c,x,y],B:[d,f],C:[g,h,e]}
有人有什么好主意吗?谢谢
如果您使用的是密钥在列表中的事实,则可以按列表或不按列表进行分组,将结果配对并将其提供给dict
,例如:
from itertools import groupby, izip
data = [['A'],'a','b','c',['B'],'d','e','f',['C'],'g','h','e']
grouped = (next(g)[0] if k else list(g) for k, g in groupby(data, lambda L: isinstance(L, list)))
result = dict(izip(*[iter(grouped)] * 2))
#{'A': ['a', 'b', 'c'], 'C': ['g', 'h', 'e'], 'B': ['d', 'e', 'f']}
根据评论更新
...是字符串:['[A]','a','b','c','x','y','[B]','d','f','[ C]','g','h','e']和确定键的规则是它是一个字符串,例如'[someString]'
更改分组以使用正则表达式(根据需要进行调整),例如:
import re
grouped = (k.group(1) if k else list(g) for k, g in groupby(data, re.compile(r'\[(.*?)\]$').match))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句