在Python lambda函数中如何基于条件分配多个返回语句

2024-03-28 13:40:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个这样的数据,我想用逗号分隔的和整型值来添加字符串。

data=[{"string": "x","int": 1},
      {"string": "y","int": 2},
      {"string": "z","int": 3}]

我期待这样的输出。在

输出:

^{pr2}$

我试过使用reduce函数

func = lambda x, y: dict((m, n + y[m]) for m, n in x.items() )
print reduce(func, data)

我得到了这样的东西。在

{"string": "xyz", "int": "6"}

如何获取逗号分隔的字符串。在


Tags: 数据lambda函数字符串inreducefordata
2条回答

您可以将^{}和{a2}与generator expressions一起使用:

res = {"string": ','.join(d['string'] for d in data), "int": sum(d['int'] for d in data)}

输出:

^{pr2}$
func = lambda x, y: dict((m, n + y[m]) for m, n in x.items() )

您需要一个自定义函数来替换n+y[m](比如custom_add(a,b)),它

  • 如果参数是整数,则返回它们的代数和
  • 如果参数是字符串,则用''将它们连接起来,并返回最终字符串

让我们来实施它。在

^{pr2}$

我们还没有is_int_array/1。我们现在就开始吧。在

def is_int_array(arr):
    return all(i for i in map(is_int, arr))

is_int/1。我们开始吧

def is_int(e):
    return isinstance(e, int)

对字符串做同样的事情

def is_str(e):
    return isinstance(e, str)

def is_str_array(arr):
    return all(i for i in map(is_str, arr))

把它们加起来-https://repl.it/LPRR

好吧,这太疯狂了,但是当您尝试实现functional-only方法时,您需要准备好这样的情况-))

相关问题 更多 >