首页 > 解决方案 > 在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'}

我怎样才能做到这一点?

标签: pythondictionary

解决方案


不确定这正是您想要做的,但可以使用以下方法简化上述操作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'}

推荐阅读