Mas*_*son 1 python dictionary python-3.x
检查“目标”列表中的字典中是否存在至少一个特定值的最优雅方法是什么?我过去一直在使用 or 语句,但这些可能相当长:
d = {'1': 'one', '3': 'three', '2': 'two', '5': 'five', '4': 'four'}
if 'six' in d.values() or 'eight' in d.values() or 'ten' in d.values() or 'fifteen' in d.values():
# do something
else:
# do something else
Run Code Online (Sandbox Code Playgroud)
创建一个目标列表,然后遍历该列表以分别根据字典检查每个目标是否更好?在这种情况下,我还需要在 if/else 块的末尾放置中断以确保它不会被多次触发:
targets = ['six', 'eight', 'ten', 'fifteen']
d = {'1': 'one', '3': 'three', '2': 'two', '5': 'five', '4': 'four'}
for t in targets:
if t in d.values():
# do something
break # to ensure the thing isn't triggered multiple times
else:
# do something else
break # to ensure the thing isn't triggered multiple times
Run Code Online (Sandbox Code Playgroud)
有没有推荐的方法来缩短它,或者第二个代码块是否像它一样好?
小智 5
你可以用下一个替换它:
if any(t in d.values() for t in targets):
pass
else:
pass
Run Code Online (Sandbox Code Playgroud)
在某些情况下会更好地转换d.values()为 set 并传递给附加变量。
values = set(d.values())
if any(t in values for t in targets):
# ...
Run Code Online (Sandbox Code Playgroud)