【发布时间】:2021-07-17 08:31:22
【问题描述】:
我需要替换字典键值中的特定子字符串。所以:
def some_func(name, **kwargs):
## Do stuff ##
print(f"<{name}", *(f"{key}={value}" for key, value in kwargs.items()), ">")
kwargs = {'foo__':'bar', 'foo_bar':'baz'}
some_func(name='some_name', kwargs)
# Output should be:
<some_name foo=bar foo-bar=baz >
#
所以kwargs 中的每个key 都需要替换为:
{'foo':'bar', 'foo-bar':'baz'}
本质上是key.replace('__', '')和key.replace('_', '-')。
我已经尝试为此使用字典:
key_to_replace = {'__':'', '_', '-'}
print(f"<{name}", *(f"{key.replace(key, value for key, value in key_to_replace.items())}={value}" for key, value in kwargs.items()), ">")
但它不起作用,它说Generator Expression must be parenthesized
我试过用括号括起来key, value for key, value in key_to_replace.items(),但它给出了SyntaxError。
我该怎么做?
【问题讨论】:
-
您的代码@RedFox 中有一些不匹配的括号
-
@Vishnudev 你能指出需要纠正的地方吗?
标签: python python-3.x dictionary keyword-argument