python - 在python dict中添加键,但如果存在则重命名
问题描述
我有一个简单的脚本:
d = {}
keys = ['f', 'f', 'f', 'f']
for k in keys:
if k in d:
k += '_copy'
d[k] = 'test'
print(d)
它产生这样的输出:
{'f': 'test', 'f_copy': 'test'}
但我需要通过添加后缀来重命名密钥
_复制
每次我添加已经存在的密钥。所以输出应该是这样的:
{'f': 'test', 'f_copy': 'test', 'f_copy_copy': 'test', 'f_copy_copy_copy': 'test'}
我怎样才能做到这一点?
解决方案
不确定这正是您想要做的,但可以使用以下方法简化上述操作itertools.accumulate
:
from itertools import accumulate
keys = ['f', 'f', 'f', 'f']
d = dict.fromkeys(accumulate(keys, lambda i,_: i+'_copy'), 'test')
print(d)
{'f': 'test',
'f_copy': 'test',
'f_copy_copy': 'test',
'f_copy_copy_copy': 'test'}
推荐阅读
- python - 由于 WDDM 模式,不允许将我的 GTX1050 用于 tensorflow/keras
- c++ - 子类在继承期间显示未知行为
- c++ - 在 C++ 中将大型无符号浮点数舍入为整数的最佳方法是什么?
- javascript - Parcel Bundler:本地主机上一切正常,但 Dist 上的 index.html 显示错误
- php - SET COOKIE PHP 使用 REQUEST_URI 然后输出而不刷新页面
- sql - SQL group by 来自多个表
- google-apps-script - 谷歌表格移动行多个条件
- botframework - 呼叫机器人(团队、Skype 等...)
- azure - DFExecutorUserError java.lang.String 无法转换为 scala.collection.immutable.Map
- javascript - 未捕获的语法错误:无法在模块 123 之外使用导入语句