You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对比两个字典同键值,筛选后者值超前者50%的键值对

解决字典值50%差值判断的问题

嘿,我来帮你调整这段代码!原代码的问题有两个:一是直接比较字符串类型的数字会出错,二是没实现“值比第一个字典大50%”的判断逻辑。咱们一步步改:

关键点说明

  • 字符串转数字:你的字典值都是字符串形式的数字,直接用>比较字符串会出现不符合预期的结果(比如'999' > '1000'会返回True,但数字上999<1000),所以必须先转成整数/浮点数再计算。
  • 50%差值判断:要满足第二个字典的值比第一个大50%,也就是第二个值 > 第一个值 × 1.5。
  • 键存在性检查:额外加个k in first的判断,避免第二个字典里出现第一个没有的键时触发KeyError。

修改后的代码

first = {'a': '1000', 'b': '2000', 'c': '2400'}
second = {'a': '1000', 'b': '3000', 'c': '5000'}

# 生成符合条件的键值对字典
filtered_dict = dict((k, second[k]) for k in second if k in first and int(second[k]) > int(first[k]) * 1.5)
print(filtered_dict)

测试结果

运行这段代码后,输出正好是你想要的:

{'c': '5000'}

扩展说明

如果你的字典值可能包含小数(比如'2400.5'),只需要把int()换成float()就行:

filtered_dict = dict((k, second[k]) for k in second if k in first and float(second[k]) > float(first[k]) * 1.5)

内容的提问来源于stack exchange,提问作者J87

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:23:03