将 **kwargs 格式化为 f-string

3

我试图格式化传递给函数的关键字参数,使得字符串输出(在本例中必须是f-string)看起来像 arg1=arg1_value, arg2=arg2_value,...

显然不能只这样做:

out = f'{**kwargs}'

所以我已经用这种方式成功了:

def to_string(**kwargs):
    return ', '.join([f'{k}={v}' for k,v in kwargs.items()])

> to_string(a=1, b=2)
'a=1, b=2'

有没有更简单的方法做这件事?

使用 lambda 函数? - sadbro
print(f'{kwargs}') - leaf_yakitori
@ sadbro,你能否提供一个例子? - duff18
@leaf_yakitori 返回一个字典 - duff18
你的解决方案看起来相当不错,唯一可以改进的是你可以删除括号([])将列表推导式转换为生成器表达式。另外,你可能还想查看一下将值格式化为 repr(通过添加 !r)的内容。 - Roy Cohen
1个回答

0

你可以解包一个可迭代对象(参见[另一个问题]),但不能解包字典。
因为你想要与f"{a=}, {b=}, {c=}"完全相同的输出,所以你不会找到比你已经有的更短的解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接