将函数应用于dict中的值

时间:2012-10-25 07:31:49

标签: python dictionary

我想将一个函数应用于dict中的所有值,并将其存储在单独的dict中。我只是想看看我如何使用python并想看看如何重写像这样的东西

for i in d:
    d2[i] = f(d[i])

类似

d2[i] = f(d[i]) for i in d

编写它的第一种方式当然很好,但我想弄清楚如何更改python语法

4 个答案:

答案 0 :(得分:64)

如果您使用的是Python 2.7或3.x:

d2 = {k: f(v) for k, v in d1.items()}

相当于:

d2 = {}
for k, v in d1.items():
    d2[k] = f(v)

否则:

d2 = dict((k, f(v)) for k, v in d1.items())

答案 1 :(得分:4)

d2 = dict((k, f(v)) for k,v in d.items())

答案 2 :(得分:3)

字典可以嵌套在Python中,在这种情况下,解决方案d2 = {k: f(v) for k, v in d1.items()}将无效。

对于嵌套字典,需要一些函数来横向整个数据结构。例如,如果允许值本身是字典,则可以定义如下函数:

def myfun(d):
  for k, v in d.iteritems():
    if isinstance(v, dict):
      d[k] = myfun(v)
    else:
      d[k] = f(v)
  return d

然后

d2 = myfun(d)

答案 3 :(得分:0)

如果您不介意使用扩展名。您也可以使用toolz自己的valmap

from toolz.dicttoolz import valmap

d2 = valmap(f, d)

如果不是为方法的简洁表述,您还可以选择提供默认的返回类,以便为需要dict以外的内容的人提供。