您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 从另一个字典列表中减去字典列表中的值

5b51 2022/1/14 8:23:34 python 字数 1826 阅读 631 来源 www.jb51.cc/python

我有两个词典列表.foo = [{'Tom': 8.2}, {'Bob': 16.7}, {'Mike': 11.6}] bar = [{'Tom': 4.2}, {'Bob': 6.7}, {'Mike': 10.2}] 应该在foo中更新a和b的减法:foo = [{'Tom': 4.0}, {'Bob': 10.0}, {'Mike': 1.4}] 现

概述

我有两个词典列表.

foo = [{'Tom': 8.2},{'Bob': 16.7},{'Mike': 11.6}]
bar = [{'Tom': 4.2},{'Bob': 6.7},{'Mike': 10.2}]

应该在foo中更新a和b的减法:

foo = [{'Tom': 4.0},{'Bob': 10.0},{'Mike': 1.4}]

现在我尝试了两个循环和zip函数

def sub(a,b):       
    for mydict,mydictcorr in zip(a,b):
        {k:[x-y for x,y in mydict[k],mydictcorr[k]] for k in mydict}
    return mydict
print sub(foo,bar)

我得到一个TypeError:’float’对象不可迭代.哪里是我的错?

这对你有用:

def sub(base,subtract):
    corrected = []
    for base_dict,sub_dict in zip(base,subtract):
        corrected.append({k: v - sub_dict.get(k,0) for k,v in base_dict.items()})
    return corrected

或者作为一个不太可读的单行(因为我想看看我是否可以):

def sub(base,subtract):
    return [{k: v - sub_dict.get(k,v in base_dict.items()} for base_dict,subtract)]

话虽如此,当您减去浮点数时,您仍可能会看到一些奇怪的结果.例如,{‘Tom’:3.999999999999999}.您可能希望在对round的调用中包装v-sub_dict.get(k,0).

总结

以上是编程之家为你收集整理的python – 从另一个字典列表中减去字典列表中的值全部内容,希望文章能够帮你解决python – 从另一个字典列表中减去字典列表中的值所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶