python - 如何比较两个具有不同键但相似值的字典并删除重复项

标签 python list dictionary duplicates key

我对Python很陌生,并且热衷于学习。我有两个字典,它们具有不同的键但具有相似的值,如下所示:

dict_a = {'r1': ['c5', 'c6', 'c7', 'c8'], 'r2': ['c9', 'c10', 'c11'], 'r3': ['c12', 'c13', 'c14', 'c15']}
dict_b = {'f1': ['c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'c10', 'c11', 'c12', 'c13', 'c14', 'c15']}

是否可以比较两个字典并删除其中的重复值?我想最后获得以下词典:

dict_a_new = {'r1': ['c5', 'c6', 'c7', 'c8'], 'r2': ['c9', 'c10', 'c11'], 'r3': ['c12', 'c13', 'c14', 'c15']}
dict_b_new = {'f1': ['c1', 'c2', 'c3', 'c4'}

我尝试过以下语法,但它对我不起作用。

dict_b_new = {k: dict_b[k] for k in set(dict_b) - set(dict_a)}

任何建议都将受到高度赞赏。

最佳答案

您可以使用 dict_a 中的所有项目创建一个集合,然后使用 dict_b 中不在该集合中的所有项目创建 dict_b_new:

set_a = {item for lst in dict_a.values() for item in lst}
dict_b_new = {k: [item for item in lst if item not in set_a] for k, lst in dict_b.items()}

演示:https://replit.com/@blhsing/PuzzledAgreeableProspect

关于python - 如何比较两个具有不同键但相似值的字典并删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75013507/

相关文章:

python - 子数据帧的子数据帧

Python html提取关键字后的数字

python - Pandas:ValueError:工作表索引 0 无效,找到 0 个工作表

python - 使用 SMTPLib Python 时获取未经授权的发件人地址

list - 打印列表的列表,Prolog

一个链表节点是否可以包含多个数据字段?

python - 根据前一个元素递增下一个元素

python - 查找给定位置的最接近的数字集

python - 转换代码以在windows中读取文件到linux

java - 时间快照的数据结构