Skip to main content
 首页 » 编程设计

python之在字典中寻找模式并制作新字典

2025年05月04日22JeffreyZhao

我有一个可以用 'K' 制作的所有序列组合的列表 和 'M' 长度从 6 到 18。所以,我有组合 包括 "KKKKKK" 到 "MMMMMMMMMMMMMMMMMM"。 我还有一本字典,其中的键是 id,值是 不仅用 K 和 M 制作的长序列,还用其他一些制作 对我来说不重要的字符。

小例子:

 com = ["KKKKKK", "KKKKKM", ......, "MMMMMMMMMMMMMMMMMM"] 
 li = {id1: "KKKKKKHKJASGKKKMOOGBMMMMMMMMMMMMMMMMMM", 
 id2:"MMKFJDFKFGKJJJJFKKKKKMJKJHFKKKKKK"} 

我想在 li 字典中找到不同的组合(值)和 创建一个新字典,其中的键是 li 字典中的 id (键)和值是包含在中找到的组合的列表 li字典的值。对于小例子,输出将是 像这样:

results = {id1: ["KKKKKK", "MMMMMMMMMMMMMMMMMM"], id2: ["KKKKKM", "KKKKKK"] } 

我写了下面的代码,但没有给我想要的。

results = {} 
 for i in com: 
     if i in li.values(): 
         results[li.keys()] = [i] 

请您参考如下方法:

您可以使用 re.findall()在字典理解中:

In [11]: {k: re.findall(r'(?:K|M){6,18}', v) for k, v in li.items()} 
Out[11]: {'id1': ['KKKKKK', 'MMMMMMMMMMMMMMM'], 'id2': ['KKKKKM', 'KKKKKK']} 

r'(?:K|M){6,18}'是一个正则表达式,将匹配 K 的任何子字符串或 M长度为 6 到 18。