Skip to main content
 首页 » 编程设计

python之在字典键中搜索元素

2025年05月04日10bluestorm

我有字典

{('22', '83', '75', '5', '8', '7', '9', '12', '16', '17', '22', '23', '24', '18', '14'): 1,  
 ('1', '2', '83', '5', '8', '75', '9', '12', '16', '17', '18', '14'): 1,  
 ('11', '2', '7', '5', '8', '7', '9', '12', '16', '17', '18', '14'): 1} 

它的键是元组。

现在我需要搜索它的任何键中是否存在一对元素,例如 (83,75) 并且 我还需要确保 83 和 75 以该顺序出现在给定的 key 中。 因此,对于示例字典中的第一个键,这是正确的,但对于第二个键则不然。

我知道我可以找到带有 83 和 75 的 key ,但我无法验证它们的顺序。

请您参考如下方法:

一个简单的 for 循环就足够了。如果未找到 '83' 或 '75',index 函数将抛出一个 ValueError。执行此操作的 Pythonic 方式是使用 try-except block 。:

my_dict = {('22', '83', '75', '5', '8', '7', '9', '12', '16', '17', '22', '23', '24', '18', '14'): 1,  
           ('1', '2', '83', '5', '8', '75', '9', '12', '16', '17', '18', '14'): 1,  
           ('11', '2', '7', '5', '8', '7', '9', '12', '16', '17', '18', '14'): 1} 
keys = [] 
for key in my_dict: 
    try: 
        if key.index('75') - key.index('83') == 1: 
            keys.append(key) 
    except ValueError: 
        pass 

如果你想在 83 之后找到包含 75 的键,无论它是否接近,你可以使用这个版本:

my_dict = {('22', '83', '75', '5', '8', '7', '9', '12', '16', '17', '22', '23', '24', '18', '14'): 1,  
           ('1', '2', '83', '5', '8', '75', '9', '12', '16', '17', '18', '14'): 1,  
           ('11', '2', '7', '5', '8', '7', '9', '12', '16', '17', '18', '14'): 1} 
keys = [] 
for key in my_dict: 
    try: 
        if '75' in key[key.index('83'):]: 
            keys.append(key) 
    except ValueError: 
        pass