如何给Python字典的所有键添加前缀?
问题解决方法
你的代码存在两个核心问题,导致运行报错:
- 遍历字典时未调用
items()方法,直接遍历字典只会返回键,无法同时解包出k和v,会触发ValueError; - 你把lambda函数本身当作了字典的键,而不是执行lambda函数生成带前缀的新键名。
下面是几种正确的实现方式:
推荐写法:简洁的字典推导式
直接用f-string拼接前缀和原键名,代码清晰高效:
original = {'lastname':'John', 'fistname':'Doe', 'id':'xxxxx'} modified = {f'contact_{k}': v for k, v in original.items()}
如果非要用lambda的正确写法
先定义lambda函数,再在推导式里调用它处理键:
original = {'lastname':'John', 'fistname':'Doe', 'id':'xxxxx'} add_prefix = lambda k: f'contact_{k}' modified = {add_prefix(k): v for k, v in original.items()}
也可以直接在推导式内执行lambda(不推荐,可读性较差):
modified = {(lambda k: f'contact_{k}')(k): v for k, v in original.items()}
另一种实现:生成器表达式转字典
modified = dict((f'contact_{k}', v) for k, v in original.items())
内容的提问来源于stack exchange,提问作者Yang L
相关产品推荐
相关产品推荐

