Skip to main content
 首页 » 编程设计

python之用另一个字典中的值替换字典键

2025年05月04日26bluestorm

我有一个字典列表,其中包含我想在每个字典的键下替换的信息。

所以,我正在考虑遍历每个字典并替换值。

我有另一个字典,其中包含我想替换为键的值和应该作为值的最终值。

它是这样的:

listOfDicts = [{'value_1' : 'A', 'value-2' : 'B', 'valu&_3' : 'C'}, {'value-1' : 'D', 'value_2' : 'E', 'value-3' : 'F'}, {'value_1' : 'G', 'value_2' : 'H', 'value_3' : 'I'}] 

然后我有另一本字典用作修复此信息的基础:

fixer = {'value-2' : 'value_2', 'value&_3' : 'value_3', 'value-3' : 'value_3', ...} 

我该如何进行替换?

- 编辑:

期望的输出应该是这样的:

listOfDicts = [{ 
'value_1' : 'A', 
'value_2' : 'B', 
'value_3' : 'C'}, 
{'value_1' : 'D', 
'value_2' : 'E', 
'value_3' : 'F'}, 
...} 

请您参考如下方法:

我们可以用一个函数修复每一个字典:

fixer = {'value-2' : 'value_2', 'value&_3' : 'value_3', 'value-3' : 'value_3'} 
 
def fix_dictionary(dict_): 
    return { fixer.get(k, k): v for k, v in dict_.items() } 

这将为给定的 dict_ 构造一个新字典,其中 fixer 中的键将被“固定”(替换为 中的相应值fixer 字典)。

然后我们可以生成一个新的固定字典列表:

[fix_dictionary(dict_) for dict_ in listOfDicts] 

或者我们可以删除该函数,并使用一个一个 衬里:

[{ fixer.get(k, k): v for k, v in dict_.items() } for dict_ in listOfDicts]