在字典键中搜索元素

sha*_*nky 1 python dictionary

我有字典

{('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}
Run Code Online (Sandbox Code Playgroud)

它的键是元组.

现在,我需要寻找是否对等元件(83,75)的任何键的存在,也是我需要确保8375存在于这个顺序给定的键.因此,对于示例字典中的第一个键,这是真的,但不适用于第二个键.

我知道我可以找我的钥匙8375,但我无法核实他们的订单.

Bee*_*ise 5

一个简单的for循环就足够了.该index函数将抛出一个ValueError如果任一'83''75'找不到.Pythonic的方法是尝试 - 除了块:

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
Run Code Online (Sandbox Code Playgroud)

如果您想要找到包含75其后的密钥,则83可以使用此版本:

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
Run Code Online (Sandbox Code Playgroud)