循环函数 python

Looping functions python

我有一个函数 f(x),我想将其应用于字典或列表中的每个项目。

我记得在 Pandas 库中,您可以将函数应用于整个数据框。是否可以在普通 python 代码中执行此操作?

有什么方法可以简化以下内容吗?

d = {1:'item1','2':'item2','a':'item1','b':'random'}
f = lambda x: 'SomeValue' if x == 'item1' else x
for key in d.keys():
    d[key] = f(d[key])

编辑: 我知道 d = {key: f(value) for key,value in d.iteritems()} 但这不是仍然循环遍历所有键吗? 这是否会使循环变慢,因为它正在存储键和值?

你可以做到

d = {k: f(v) for k, v in d.iteritems()}

但这将创建一个新的字典(而不是修改原始字典)。在许多情况下,这就是您想要的。 (在大多数情况下,这也是它在 pandas 中的工作方式。)没有直接的快捷方式来就地修改原始字典的值。

从您的编辑来看,您似乎很关心性能。基本 Python 类型没有 pandas 和 numpy 提供的那种向量化操作(即,“一次”对整个结构进行操作)。这就是创建 numpy 的原因。如果性能是你目标,您应该针对您的用例对这两种方法进行基准测试。一般来说,如果操作是可以矢量化的数字操作,则操作本身在 numpy 中更快,但是创建新的 numpy 数组(包括更改其大小的操作,比如append)比较慢。