[英]How to get all dict keys where values contain given substring
[英]How to convert a list of strings to a dict of lists where keys start with given substring
我有一個這樣的列表:
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
等)之后調用您的變量 - 如果您這樣做,您實際上是在隱藏功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.