Skip to main content
 首页 » 编程设计

python之将字典中的键组合成列表中的元组

2025年05月04日9over140

我正在寻找一种解决方案,根据作为值的列表在字典中搜索键,然后将键附加到元组列表。我能够搜索正确的键,但找不到构建我期望的列表的方法。感谢您的帮助。

如下所示,我想找到d中所有值等于列表l中的元素的键,并将所有搜索到的键放入预期输出中显示的元组列表。

d = {'acutrar': 'acutrar', 
 'aguosa': 'aguoso', 
 'capitalizareis': 'capitalizar', 
 'conocerán': 'conocer', 
 'conociéremos': 'conocer', 
 'conocían': 'conocer', 
 'conocías': 'conocer', 
 'conozcas': 'conocer', 
 'pales': 'palar', 
 'planeareis': 'planear', 
 'planearás': 'planear', 
 'planeasteis': 'planear', 
 'planeáramos': 'planear'} 
 
l = ['conocer', 'NOT FOUND', 'NOT FOUND', 'planear'] 
 
for word in l: 
    for (x,y) in d.items(): 
        if y == word: 
            print(word, x) #I can only search for the keys but don't know how to build that list of tuples 

预期输出:

[('conocerán','conocías','conozcas','conocían','conociéremos'),('NOT FOUND'),('NOT FOUND'),('planeáramos','planeareis','planearás','planeasteis')] 

请您参考如下方法:

为什么不将字典转换成更合适/方便的结构并通过键执行 O(1) 查找而不是遍历所有项目并搜索值:

from collections import defaultdict 
 
d = {'acutrar': 'acutrar', 
 'aguosa': 'aguoso', 
 'capitalizareis': 'capitalizar', 
 'conocerán': 'conocer', 
 'conociéremos': 'conocer', 
 'conocían': 'conocer', 
 'conocías': 'conocer', 
 'conozcas': 'conocer', 
 'pales': 'palar', 
 'planeareis': 'planear', 
 'planearás': 'planear', 
 'planeasteis': 'planear', 
 'planeáramos': 'planear'} 
 
 
t = defaultdict(list) 
for key, value in d.items(): 
    t[value].append(key) 
 
l = ['conocer', 'NOT FOUND', 'NOT FOUND', 'planear'] 
 
print([t.get(item, [item]) for item in l]) 

打印:

[ 
    ['conozcas', 'conociéremos', 'conocías', 'conocerán', 'conocían'],  
    ['NOT FOUND'],  
    ['NOT FOUND'],  
    ['planeáramos', 'planearás', 'planeareis', 'planeasteis'] 
]