我有字典
{('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
关于python - 在字典键中搜索元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24168136/