[英]How to pass whole statements as function parameters? python
我有这个dict
dic = {'wow': 77, 'yy': 'gt', 'dwe': {'dwdw': {'fefe': 2006}}}
我有这个功能
def get_missing_key(data, nest, default_value):
try:
return data + nest
except KeyError as err:
return default_value
这就是我所说的:
get_missing_key(dic, ['dwe']['dwdw']['fefe'], 16)
我想要的是我希望将第二个参数转换为普通的 python 表达式并用它进行计算
我希望它是这样的
def get_missing_key(data, nest, default_value):
try:
return data['dwe']['dwdw']['fefe']
except KeyError as err:
return default_value
有没有办法实现这一目标?
但是我所拥有的显然不起作用,因为我无法将dict
与list
您可以像@kyle-parsons 那样使用 reduce,或者您可以手动循环:
lookup = ["dwe", "dwdw", "fefe"]
def find_missing(data, lookup, default):
found = data
for i in lookup:
try:
found = found[i]
except KeyError:
return default
return found
您应该将您的密钥作为列表传递。
from functools import reduce
def get_missing_key(data, nest, default_value):
try:
reduce(dict.__getitem__, nest, data)
except KeyError:
return default_value
一般来说,Python 急切地评估表达式,并且没有办法延迟传递要构建和exec
的代码字符串,但这确实不是一个好主意。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.