我有一个这样的清单:
list = ['ID - ISO', 'CATA - CIT', 'CATA - CIT2', 'ID - ISO6', 'CATA - CIT', 'CATA - CIT2', 'CATA - CIT6', 'CATA - CIT8']
我想创建一个这样的字典
dict = {'ID - ISO': ['CATA - CIT', 'CATA - CIT2'],
'ID - ISO6': ['CATA - CIT', 'CATA - CIT2', 'CATA - CIT6', 'CATA - CIT8']}
因此,我开发了这段代码,但是当我添加值时,它不起作用:所有id的值都相同。
with open("/data/myfile") as openfile:
for line in openfile:
for single_line in line.split('\\'):
if line.startswith("ID"):
Dict[line] = None
elif line.startswith("CATA"):
for li in Dict:
Dict[li]=line
print Dict
您可以使用itertools.groupby()
:
from itertools import groupby
lst = ['ID - ISO', 'CATA - CIT', 'CATA - CIT2','ID - ISO6', 'CATA - CIT', 'CATA - CIT2', 'CATA - CIT6', 'CATA - CIT8']
result = {}
for k,v in groupby(lst, lambda x: x.startswith('ID')):
if k:
key = next(v)
else:
result[key] = list(v)
print(result)
哪个会产生
{
'ID - ISO': ['CATA - CIT', 'CATA - CIT2'],
'ID - ISO6': ['CATA - CIT', 'CATA - CIT2', 'CATA - CIT6', 'CATA - CIT8']
}
此外,不叫内建类型后,你的变量(list
,dict
,tuple
等) -你有效地遮蔽的功能,如果你做的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句