我有字典
{('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
