将带有 lambda 的字符串连接转换为 f 字符串

Converting string concatenation with lambda to f strings

我正在努力研究 Python 3 中 f 字符串的高级用法,但我似乎无法弄清楚它们在 lambda 函数中的用法。例如,当您有使用 lambda 定义字符串中的某些值的字符串连接时,您将如何使用 f 字符串?当其中一个值使用 if 函数来定义值时更是如此。

例如,我试过以下方法:

        cmd_out = reduce(lambda acc, x: f'{acc} -v {x["Source"]}:{x["Destination"]}'
                         f'{(":ro" if not x["RW"] is True else " ")} {mounts}')

但这行不通。

这是拼接的原文。

cmd_out = reduce(lambda acc,x: acc + "-v " + x["Source"] + ":" + x["Destination"]+ (":ro" if not x["RW"] is True else "") + " ", mounts, "")

因此,我希望能够使用 f 字符串来简化流程并减少错误,而不是使用连接。有什么想法吗?

您正试图在 lambda 表达式中包含 mounts,但这正是 reduce 应该迭代的内容。我不会在这里使用 reduce;请改用 join 方法。

cmd_out = " ".join(f'-v {x["Source"]}:{x["Destination"]}{"" if x["RW"] else ":ro"}'
                   for x in mounts)