首页 > 解决方案 > 按值比较 2 个字典并删除一些 k, v python

问题描述

我有 2 字典:

First = {'A': 0.0, 'B': 0.0, 'C': 0.0, 'D': 0.0, 'E': 0.0, 'F': 0.0, 'G': 0.0, 'H': 0.0, 'I': 0.0, 'J': 0.0, 'K': 0.47, 'L': 0.0, 'M': 0.0, 'N': 0.0, 'O': 0.0, 'P': 0.0, 'Q': 0.0, 'R': 0.0, 'S': 0.41, 'T': 0.0}

Second = {'A': 0.0, 'B': 0.0, 'C': 0.0, 'D': 0.0, 'E': 0.0, 'F': 0.0, 'G': 0.0, 'H': 0.0, 'I': 0.18, 'J': 0.0, 'K': 1.0, 'L': 0.0, 'M': 0.0, 'N': 0.0, 'O': 0.0, 'P': 0.0, 'Q': 0.0, 'R': 0.0, 'S': 0.32, 'T': 0.0}

我想在有条件的第二个字典中删除某些值:

1 - 如果第二个 dict 中的值 < 到第一个 dict 的值,则将 (k,v) 放到第二个 dict

2 - 如果第二个字典中的值 == 0.0 然后将 (k,v) 放到第二个字典中

Fanaly,我们有结果:

Second = {'I': 0.18,'K': 1.0, 'S': 0.32}

这是我的代码:

for key, value in dict(Second).items():
    for key, value in dict(First).items():
        if Second[value] == First[value] :
            del Second[key] 
        elif First[value]> Second[value]:
            del Second[key]

Second

但不工作:

KeyError: 0.0

有人能帮我吗 !

标签: pythondictionary

解决方案


您不能将值查找为字典的键。此外,在您已经清除了所有要清除的元素之后,您的第二个循环会导致您遍历第二个字典。

您正在寻找类似的东西:

for key, value in dict(Second).items():
    if Second[key] == First[key] :
        del Second[key] 
    elif First[key]> Second[key]:
        del Second[key]

甚至更好

for key, value in Second.items():
    if Second[key] <= First[key]:
        del Second[key]

虽然你的第二个条件,指定它应该更像是:

for key, value in Second.items():
    if Second[key] < First[key] or Second[key] == 0.0:
        del Second[key]

推荐阅读