如何比较来自不同字典的相同键值与百分比

时间:2018-05-14 20:21:07

标签: python python-3.x python-2.7

尝试比较来自两个不同dict的相同键值,如果第二个dict值比第一个dict值大50%,则输出应仅显示不同的键值。

first={'a': '0.1000', 'b': '0.2000', 'c': '0.2400'}
second={'a': '0.1000', 'b': '0.3000', 'c': '0.5000'}
desired = {'c': '5000'} # c is 50% bigger from first dict value

下面是我的代码:

print({k: v for k, v in second.items() if int(v) > int(first[k]) * 1.5})

但是收到此错误:     TypeError:float()参数必须是字符串或数字,而不是'NoneType' 怎么解决这个问题?

2 个答案:

答案 0 :(得分:0)

desired={}

for k, v in first.items():
    if (float(second[k])) > (1.5*float(first[k])):
        desired[k] = v

假设您在第一个和第二个词典中使用相同的键。

答案 1 :(得分:-1)

您没有正确解析它,strip "0."如下:

first={'a': '0.1000', 'b': '0.2000', 'c': '0.2400'}
second={'a': '0.1000', 'b': '0.3000', 'c': '0.5000'}
print({k: v.lstrip("0.") for k, v in second.items() if int(v.lstrip("0.")) > int(first[k].lstrip("0.")) * 1.5})
{'c': '5000'}