如何只用字符串在字典中的字典中获取值?

时间:2014-10-21 12:24:28

标签: python string dictionary

我试图创建一个接受字典和字符串的函数,并根据字符串在Dictionary中输出一个值。

例如,输入为:

D = {'assigned':{'id':4,'name':'myname'},'anotherkey':{'id':4,'name':'myname'}}
s = "['assigned']['id']"

结果:

4 

这也可以通过以下方式实现,但问题是该函数只会采用字典和字符串

print D['assigned']['id']
>> 4

3 个答案:

答案 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