And*_*Guy 6 python lookup dictionary
是否有Python字典方法或简单表达式返回字典中存在的第一个键(来自可能键列表)的值?
假设我有一个包含许多键值对的Python字典.任何特定密钥的存在都不能保证.
d = {'A':1, 'B':2, 'D':4}
Run Code Online (Sandbox Code Playgroud)
如果我想获取给定键的值,并返回一些其他默认值(例如None)如果该键不存在,我只需:
my_value = d.get('C', None) # Returns None
Run Code Online (Sandbox Code Playgroud)
但是如果我想在默认为最终默认值之前检查一些可能的键呢?一种方法是:
my_value = d.get('C', d.get('E', d.get('B', None))) # Returns 2
Run Code Online (Sandbox Code Playgroud)
但随着备用键数量的增加,这会变得相当复杂.
是否存在针对此方案的Python函数?我想象的是:
d.get_from_first_key_that_exists(('C', 'E', 'B'), None) # Should return 2
Run Code Online (Sandbox Code Playgroud)
如果不存在这样的方法,是否有一个在这种情况下常用的简单表达式?
使用一个普通的老式 for 循环,流量控制最清晰:
for k in 'CEB':
try:
v = d[k]
except KeyError:
pass
else:
break
else:
v = None
Run Code Online (Sandbox Code Playgroud)
如果你想单行它,可以使用类似理解的语法:
v = next((d[k] for k in 'CEB' if k in d), None)
Run Code Online (Sandbox Code Playgroud)