python - 按值比较 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
有人能帮我吗 !
解决方案
您不能将值查找为字典的键。此外,在您已经清除了所有要清除的元素之后,您的第二个循环会导致您遍历第二个字典。
您正在寻找类似的东西:
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]
推荐阅读
- python - 从 python 多次运行可执行文件的最快方法
- python - Python - 迭代字典键时的性能
- c - 在 C 中创建 BYTE 数组结构
- javascript - 使用 DataTables 时如何维护 Ember Data 双向绑定?
- python - Hough Circles 打开 CV 错误
- unit-testing - 在 Qpid 代理中创建 Exchange 和队列
- jquery - Ajax 将数据移动到另一个 div
- php - 删除特定联系表 7 挂钩
- r - 从 MYSQL VIEW 表中提取数据到 Rstudio
- java - InvalidQueryException despite of correct query