Python字典中不同键的交集

问题描述 投票:0回答:1

我不仅试图找到交集,而且要找到我的字典中具有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集与交集进行比较,以找到差异并填写缺少的字典条目。

我之前使用一些for循环来完成此操作,但是它花费了太长时间,因为dict中的数据非常大。。

python dictionary intersection
1个回答
2
投票

鉴于您的集合是集合,您可以使用它们提供的适当集合操作: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),而命名可能[[also是a-b, b-a)]的简写)

© www.soinside.com 2019 - 2024. All rights reserved.