首页 > 解决方案 > 用新字典重新映射字典

问题描述

我想用 Python 中的新字典替换字典键和值。

例如:

dic1 = {'A': 1, 'B': 2, 'C': 3, 'D': 4}
dic2 = {'A': ['B', 'C', 'D','K'], 'C': ['C', 'D', 'A', 'F'], 'D': ['A', 'B', 'C'] }

在 Dic2 中,我有 dic1 中不存在的“K”和“F”值。我也想删除它们。我想要以下形式的输出:

out_dic = {1: [2, 3, 4], 3: [3, 4, 1], 4: [1, 2, 3]}

我找到了一个不够快的解决方案。首先,我用新值替换字典的值。然后用新密钥更新密钥。

标签: pythonpython-3.xdictionary

解决方案


dic1用作值的映射,您希望根据该映射替换dic2. 所以只需迭代所有项目dic2并使用映射来替换它们:

dic3 = {}
for key, values in dic2.items():
    dic3[dic1[key]] = [dic1[value] for value in values]

print(dic3)

如果您的值dic2可能不存在于 中dic1,请更改为将它们保留为 中的值dic2

    dic3[dic1.get(key, key)] = [dic1.get(value, value) for value in values]

如果您想完全删除它们,请使用:

for key, values in dic2.items():
    if key in dic1:
        dic3[dic1[key]] = [dic1[value] for value in values if value in dic1]

这使:

{1: [2, 3, 4], 3: [3, 4, 1], 4: [1, 2, 3]}

推荐阅读