猿问

根据某个动态动作更新字典列表

我在编写基于某些动态动作更新字典的方法时遇到困难


我有一个字典列表,例如


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

谢谢你。


哆啦的时光机
浏览 81回答 2
2回答

慕丝7291255

使用 pythons eval 函数https://docs.python.org/3/library/functions.html#eval您应该能够使用以下示例来修改您的代码以执行您想要的操作def my_func(x,y,action):    try:        z = eval(action)    except:        z = None    return zmy_func(1,2,"x+y")#3my_func(2,3,"x*y")#6希望这可以帮助。

慕田峪9158850

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
随时随地看视频慕课网APP

相关分类

Python
我要回答