如何基于Python中的匹配键将键值对添加到另一个字典列表中的现有字典列表中

普拉迪普

我试图通过比较键列将键值对附加到现有的字典列表中。

# Initial list of dict
lst = [{'NAME': 'TEST', 'TYPE': 'TEMP'},
   {'NAME': 'TEST', 'TYPE': 'PERMANENT'},
   {'NAME': 'TEST1', 'TYPE': 'TEMP'}]

# From the below list of dict, the Key (NAME only) need to compare with the initial list dict 
# and for any match need to append the rest of key value pair to the initial list of dict.
compare_lst = [{'NAME': 'TEST', 'ID': 70001, 'V_KEY': 67, 'R_KEY': 1042, 'W_ID': 22},
               {'NAME': 'TEST1','ID': 70005, 'V_KEY': 75, 'R_KEY': 1047, 'W_ID': 28}]

# Expected Out put
out = [{'NAME': 'TEST', 'TYPE': 'TEMP', 'ID': 70001, 'V_KEY': 67, 'R_KEY': 1042, 'W_ID': 22},
   {'NAME': 'TEST', 'TYPE': 'PERMANENT', 'ID': 70001, 'V_KEY': 67, 'R_KEY': 1042, 'W_ID': 22},
   {'NAME': 'TEST1', 'TYPE': 'TEMP', 'ID': 70005, 'V_KEY': 75, 'R_KEY': 1047, 'W_ID': 28}]
让·弗朗索瓦·法布尔(Jean-Francois Fabre)

简单的方法,没有列表组合,双循环但工作正常:

out=[]

for l in lst:
    for c in compare_lst:
        if l['NAME']==c['NAME']:  # same "key": merge
            lc = dict(l)
            lc.update(c)  # lc is the union of both dictionaries
            out.append(lc)

print(out)

在定义了一个辅助函数以返回2个字典的并集之后,使用了更多的pythonic:

out=[]

def dict_union(a,b):
    r = dict(a)
    r.update(b)
    return r

for l in lst:
    out.extend(dict_union(l,c) for c in compare_lst if l['NAME']==c['NAME'])

n python 3.5+,不需要工会aux方法,您可以编写得更简单

out = []
for l in lst:
    out.extend({**l,**c} for c in compare_lst if l['NAME']==c['NAME'])

甚至更好:onelineritertools.chain用于展平2级列表比较的结果

import itertools    
out=list(itertools.chain(dict_union(l,c) for l in lst for c in compare_lst if l['NAME']==c['NAME'] ))

对于python 3.5

import itertools    
out=list(itertools.chain({**l,**c} for l in lst for c in compare_lst if l['NAME']==c['NAME'] ))

(执行此操作的多种方法体现了我在最后几分钟所做的渐进式改进)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何根据python中另一个字典键的匹配来修改字典中的键值列表?

来自分类Dev

如何将字典中的键与列表中的元素进行匹配,并将这些键值存储到python中的另一个字典中?

来自分类Dev

将包含列表的字典追加到python中的另一个字典

来自分类Dev

是否有Python方式将一个字典的浮点值添加到另一字典的值列表中?

来自分类Dev

如何使用循环将字典添加到另一个字典中?

来自分类Dev

使用另一个字典列表中的键对字典列表进行排序

来自分类Dev

将两个字典值合并为一个,然后将其添加到Python中的另一个字典中

来自分类Dev

将字典的值列表替换为另一个字典中的对应键值映射

来自分类Dev

如何有效地将字典中的字符串列表与Python中的另一个字典列表进行比较?

来自分类Dev

在python 3的另一个字典中添加带有静态键的字典

来自分类Dev

将键添加到字典中的现有键值对

来自分类Dev

如何遍历字典中的键并与另一个字典中的键/值匹配

来自分类Dev

将字典中的值列表除以另一个字典中的值列表

来自分类Dev

将一个字典中的空列表的键与另一个包含该键作为值的字典合并后,找到最小的集合

来自分类Dev

当值与列表中的文件匹配时,用另一个字典替换字典中的项目

来自分类Dev

如何将字典附加到 Python3 中的另一个字典字符串键?

来自分类Dev

将字典值添加到另一个字典中,而不用替换前一个

来自分类Dev

将字典中的键复制到另一个字典

来自分类Dev

如何创建一个列表作为字典的键并添加到不同部分的列表中?

来自分类Dev

如何从另一个 python 字典中获取一个字典中的相应列表值,其中它们被列为键,比较并打印出一个 csv?

来自分类Dev

Python将字典列表转换为另一个字典列表

来自分类Dev

Python将字典列表转换为另一个字典列表

来自分类Dev

如何将列表中的列表添加到另一个列表

来自分类Dev

如何在一个字典中找到在另一个字典中没有对应项的键?

来自分类Dev

如何映射键,在另一个字典中查找键?

来自分类Dev

如何从字典数组中获取字典的数组(例如arrayGroupBy),其中某个键的值与另一个字典键的值匹配

来自分类Dev

Ansible-检查列表中的元素在另一个字典中是否没有相同的值

来自分类Dev

使用键,一个字典中的值来获取python中另一个字典中的值

来自分类Dev

如何断言一个字典包含另一个字典,而在python中没有assertDictContainsSubset?

Related 相关文章

  1. 1

    如何根据python中另一个字典键的匹配来修改字典中的键值列表?

  2. 2

    如何将字典中的键与列表中的元素进行匹配,并将这些键值存储到python中的另一个字典中?

  3. 3

    将包含列表的字典追加到python中的另一个字典

  4. 4

    是否有Python方式将一个字典的浮点值添加到另一字典的值列表中?

  5. 5

    如何使用循环将字典添加到另一个字典中?

  6. 6

    使用另一个字典列表中的键对字典列表进行排序

  7. 7

    将两个字典值合并为一个,然后将其添加到Python中的另一个字典中

  8. 8

    将字典的值列表替换为另一个字典中的对应键值映射

  9. 9

    如何有效地将字典中的字符串列表与Python中的另一个字典列表进行比较?

  10. 10

    在python 3的另一个字典中添加带有静态键的字典

  11. 11

    将键添加到字典中的现有键值对

  12. 12

    如何遍历字典中的键并与另一个字典中的键/值匹配

  13. 13

    将字典中的值列表除以另一个字典中的值列表

  14. 14

    将一个字典中的空列表的键与另一个包含该键作为值的字典合并后,找到最小的集合

  15. 15

    当值与列表中的文件匹配时,用另一个字典替换字典中的项目

  16. 16

    如何将字典附加到 Python3 中的另一个字典字符串键?

  17. 17

    将字典值添加到另一个字典中,而不用替换前一个

  18. 18

    将字典中的键复制到另一个字典

  19. 19

    如何创建一个列表作为字典的键并添加到不同部分的列表中?

  20. 20

    如何从另一个 python 字典中获取一个字典中的相应列表值,其中它们被列为键,比较并打印出一个 csv?

  21. 21

    Python将字典列表转换为另一个字典列表

  22. 22

    Python将字典列表转换为另一个字典列表

  23. 23

    如何将列表中的列表添加到另一个列表

  24. 24

    如何在一个字典中找到在另一个字典中没有对应项的键?

  25. 25

    如何映射键,在另一个字典中查找键?

  26. 26

    如何从字典数组中获取字典的数组(例如arrayGroupBy),其中某个键的值与另一个字典键的值匹配

  27. 27

    Ansible-检查列表中的元素在另一个字典中是否没有相同的值

  28. 28

    使用键,一个字典中的值来获取python中另一个字典中的值

  29. 29

    如何断言一个字典包含另一个字典,而在python中没有assertDictContainsSubset?

热门标签

归档