如何对比两个字典同键值,筛选后者值超前者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
相关产品推荐
相关产品推荐

