繁体   English   中英

在字典列表中找到所有相同的键并找出它们的值之间的差异

[英]find all the same keys in a list of dicts and find the difference between their values

我有一个练习,我得到两个或更多稀疏矩阵,我需要找到它们之间的区别。 输入是一个字典列表,输出是具有差异的字典:

输入: diff_sparse_matrices([{(1, 3): 2, (2, 7): 1}, {(1, 3): 6}])
输出: {(1, 3): -4, (2, 7): 1}

def diff_sparse_matrices(lst):
    new_dict = {}
    for d in lst :
        for key in d.keys() :

这就是我能想到的。 我该如何编写这段代码?

  • 我不能使用 numpy
  • 我不能使用集合

如果键的值为 0,我还需要删除该项目,所以

输入: diff_sparse_matrices([{(1, 3): 2, (2, 7): 1}, {(1, 3): 2}])
输出: {(2, 7): 1}

我不知道为什么,但如果输入是

[{(1, 3): 2, (2, 7): 1}, {(1, 3): 6, (9,10): 7}, {(2,7): 0.5, (4,2): 10}]

输出是

{(1, 3): -4, (2, 7): 0.5, (9, 10): -7, (4,2): -10}

请注意,它是 - 7 和 -10 而不是 7 和 10

你可以用dict.get()试试这个:

lst_dct = [{(1, 3): 2, (2, 7): 1}, {(1, 3): 6, (9,10): 7}, {(2,7): 0.5, (4,2): 10}]

res = {}
for ld in lst_dct:
    for k,v in ld.items():
        res[k] = -v - res.get(k,0)
        
print(res)    

输出:

{(1, 3): -4, (2, 7): 0.5, (9, 10): -7, (4, 2): -10}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM