我在编写基于某些动态动作更新字典的方法时遇到了困难
我有像这样的词典列表
data_list = [{'x_data':1.987, 'y_data':25.9, 'plant_id':12}, {'x_data':1.024, 'y_data':19.9, 'plant_id':14}]
action = "x_data+y_data"
#or it may be "y_data/x_data" or "x_data*y_data" and "1/(x_data*y_data").
output : [{z_data:27.887 'plant_id':12}, {z_data:20.925, 'plant_id':14}]
所以,我想要一个方法,该方法具有列表和动作,并提供更新的列表。
update_dictionaries(data_list, action):
return updated_list
谢谢。
答案 0 :(得分:2)
使用python的eval函数https://docs.python.org/3/library/functions.html#eval
您应该能够使用以下示例修改代码以执行所需的操作
def my_func(x,y,action):
try:
z = eval(action)
except:
z = None
return z
my_func(1,2,"x+y")
#3
my_func(2,3,"x*y")
#6
希望这会有所帮助。
答案 1 :(得分:1)
def update_dictionaries(data_list, action):
action = action.replace("x_data","dic['x_data']")
action = action.replace("y_data","dic['y_data']")
for dic in data_list:
ans = eval(action)
dic['z_data']=ans
dic.pop('x_data',None)
dic.pop('y_data',None)
return data_list
谢谢我!