Python:lambda函数中的eval()作为map()的参数将map()的输入序列更改为global()到位

时间:2015-06-02 20:28:51

标签: python dictionary pandas lambda

我正在使用Python 3.4在map()中应用lambda函数来创建新变量。

要映射的输入序列是一个dicts列表。 lambda函数将在单独的配置文件中定义。为了尽量减少键入,我想在lambda中使用eval(),如下所示:

dat = [{'a':1, 'b':2}, {'a':2,'b':1}]
a_transformation = 'a > 1'
temp = map(lambda x: eval(a_transformation,x), dat)

结果如预期,但输入序列中的每个项目都会更改为global()的输出....

我可以毫无问题地与Pandas做类似的事情:

import pandas
dat = [{'a':1, 'b':2}, {'a':2,'b':1}]
dat_pandas = pandas.DataFrame(a)
a_transformation = 'a > 1'
temp = dat_pandas.eval(a_transformation, engine='python')

但我宁愿不必使用熊猫。

有什么想法吗?

谢谢!

0 个答案:

没有答案