我试图创建一个接受字典和字符串的函数,并根据字符串在Dictionary中输出一个值。
例如,输入为:
D = {'assigned':{'id':4,'name':'myname'},'anotherkey':{'id':4,'name':'myname'}}
s = "['assigned']['id']"
结果:
4
这也可以通过以下方式实现,但问题是该函数只会采用字典和字符串
print D['assigned']['id']
>> 4
答案 0 :(得分:2)
如果您不想使用eval()
,您当然可以使用正则表达式自行解析字符串的字段,例如:
import re
def lookup(d, s):
mo = re.match(r"\['([a-z]+)'\]\['([a-z]+)'\]", s)
if mo and len(mo.groups()) == 2:
return d[mo.group(1)][mo.group(2)]
return None
由于输入非常复杂,您可以进行更简单的解析。
答案 1 :(得分:0)
您可以使用eval
,但您必须确保字符串确实包含您想要的内容:
>>> eval("D"+s)
4
答案 2 :(得分:0)
eval
可以做到这一点
>>> D = {'assigned':{'id':4,'name':'myname'},'anotherkey':{'id':4,'name':'myname'}}
>>> s = "['assigned']['id']"
>>> eval("D" +s)
4