Python 字典中不同键的交集

Intersection from different keys inside Python dictionary

我不仅要查找交集,还要查找字典中具有 ID 的两组之间的差异。 我的字典结构是:

dict_all[key] = {"id_yes" : None, "id_no" : None ,"ZUW_yes": set(), "ZUW_no": set(), "missing_ZUW_yes" : set(), "missing_ZUW_no" : set()}

字典之前被填满了,除了

"missing_ZUW_yes" : set(), "missing_ZUW_no" : set()

这两个应该从比较 "ZUW_yes": set(), "ZUW_no": set() 中获取丢失的 ID。 这意味着 missing_ZUW_yes 必须包含 ZUW_no 但不在 ZUW_yes.

中的对象

我试图通过这样做来建立交叉点:

def intersection(dict_all):
overlap = [k for k in dict_all[key]["ZUW_yes"] if in dict_all[key]["ZUW_no"]]

在下文中,我想将单个 yes 和 no 集与交集进行比较,以找出差异并填写缺少的 dict 条目。

我之前用一些 for 循环做过这个,但是花了太长时间,因为 dict 中的数据非常大..

鉴于您的集合是 集合,您只需使用它们提供的正确集合操作即可:ZUW_no - ZUW_yes 将为您提供 ZUW_no 中但不包含的所有内容ZUW_yes.

如果您更喜欢更通俗易懂的版本,-set_a.difference(b) 的别名。请注意,方法形式也可以采用多个参数,因此 a - b - c - d(又名 a - (b | c | d))也可以写成 a.difference(b, c, d).

seta number of very useful set-operations provided out of the box 你可能想看一看,其中大部分都非常清楚(在我看来,唯一有点模棱两可的是 symmetric_difference,因为它计算 (a-b) | (b-a) 又名 (a|b) - (a&b),虽然它的命名可以 让它成为 shorthand for a-b, b-a)