Python 3.x 如何在保留键的同时扩展字典中的字符串列表以生成字典列表?

Python 3.x 如何在保留键的同时扩展字典中的字符串列表以生成字典列表?,python-3.x,list,dictionary,zip,key,Python 3.x,List,Dictionary,Zip,Key,我遇到过几种方法,但没有一种适合我正在尝试的方法。为了简单起见,我有一个大于20k键的字典,每个键都有一个字符串列表(不同长度的列表)。我只是尝试在函数在每个单独的字典中进行计算之前,获取每个键列表中的每个字符串并生成字典列表的一部分 pep_dic={gene1:[str1,str2,str3], gene2:[str1,str2], etc.} 这段代码是一个更大的函数的一部分,本质上,pep_dict是一个字典,它包含一个带有字符串列表的键。我在这里得到的输出是一个空列表 raw=df[

我遇到过几种方法,但没有一种适合我正在尝试的方法。为了简单起见,我有一个大于20k键的字典,每个键都有一个字符串列表(不同长度的列表)。我只是尝试在函数在每个单独的字典中进行计算之前,获取每个键列表中的每个字符串并生成字典列表的一部分

pep_dic={gene1:[str1,str2,str3], gene2:[str1,str2], etc.}
这段代码是一个更大的函数的一部分,本质上,pep_dict是一个字典,它包含一个带有字符串列表的键。我在这里得到的输出是一个空列表

raw=df[[target, identifier]].set_index(identifier).to_dict()[target]
pep_dict = {}
pep_dic_list = []
for gene,peptide in raw.items():
    pep_dict[gene] = list(parser.cleave(peptide,rule=rule,min_length=min_length,exception=exception,missed_cleavages=missed))
pep_dic_list = [dict(zip(pep_dict.keys(), i)) for i in zip(*pep_dict.values())]
return pep_dic_list
预期输出:

pep_dict_list=[{gene1:str1},{gene1:str2},...{gene2:str1},etc.]
如有任何见解,将不胜感激


干杯

您可以使用
for
循环在嵌套字典中进行简单循环

 pep_dic={'gene1':['str1','str2','str3'], 'gene2':['str1','str2']}
    pep_dic_list = []
    
    for k, lst in pep_dic.items():    
        d = {}
        for i in range(len(lst)):
            d.update({k: lst[i]})
            new_d = d.copy()
            pep_dic_list.append(new_d)
    
    
    print(pep_dic_list)

#[{'gene1': 'str1'}, {'gene1': 'str2'}, {'gene1': 'str3'}, {'gene2': 'str1'}, {'gene2': 'str2'}]

也许你应该每行做更少的事情,以免混淆自己,帮助你更好地理解发生了什么。请不要查看错误和丢失的数据。好的,这里有一个基本的例子。有些键在每个列表中有100个字符串。我能列出带字符串的字典,但我似乎不能保留键。我不经常使用字典,所以只要对如何使用dict.items()解包列表有一个基本的了解就很有帮助了。我尝试了一个键、值循环,就像我使用原始字典一样,但它一直在破坏我的计算机。这是一个与我想要的相似的例子,但似乎不适合我的字典。有趣。我之前的一些尝试并不遥远,但我没有考虑使用范围循环来迭代嵌套列表。这是有道理的,尽管我确信有一种更“蟒蛇式”的方式。。。。无论如何,这让我更好地理解了如何操作字典。谢谢