迭代以形成集合的并集
Iteration to make a union of sets
我有一个包含集合作为值的字典,我想使用 for 循环合并所有这些集合。我试过将 set.union() 与 for 循环一起使用,但我认为这不起作用,有什么简单的方法可以进行此迭代?
for key in self.thisDict.keys():
for otherKey in self.thisDict.keys():
if otherKey!=key:
unionSet=set.union(self.thisDict[otherKey])
我认为我遇到的问题是我没有创建所有集合的并集。我正在处理大量数据,所以很难说清楚。使用我正在创建的 unionSet 对象,我正在打印出这些数据,但它似乎没有我预期的那么大
这是一种相当幼稚的方法 - 创建一个结果集,迭代字典值并使用在当前迭代中找到的值更新结果集。 |=
是 set.update
方法的别名。
d = {1: {1, 2, 3}, 2: {4, 5, 6}}
result = set()
for v in d.values():
result |= v
assert result == {1, 2, 3, 4, 5, 6}
一个简单的集合理解就可以了:
>>> d = {1: {1, 2, 3}, 2: {4, 5, 6}}
>>> {element for value in d.values() for element in value}
{1, 2, 3, 4, 5, 6}
在我看来,这更具可读性:
>>> from itertools import chain
>>> set(chain.from_iterable(d.values()))
{1, 2, 3, 4, 5, 6}
我有一个包含集合作为值的字典,我想使用 for 循环合并所有这些集合。我试过将 set.union() 与 for 循环一起使用,但我认为这不起作用,有什么简单的方法可以进行此迭代?
for key in self.thisDict.keys():
for otherKey in self.thisDict.keys():
if otherKey!=key:
unionSet=set.union(self.thisDict[otherKey])
我认为我遇到的问题是我没有创建所有集合的并集。我正在处理大量数据,所以很难说清楚。使用我正在创建的 unionSet 对象,我正在打印出这些数据,但它似乎没有我预期的那么大
这是一种相当幼稚的方法 - 创建一个结果集,迭代字典值并使用在当前迭代中找到的值更新结果集。 |=
是 set.update
方法的别名。
d = {1: {1, 2, 3}, 2: {4, 5, 6}}
result = set()
for v in d.values():
result |= v
assert result == {1, 2, 3, 4, 5, 6}
一个简单的集合理解就可以了:
>>> d = {1: {1, 2, 3}, 2: {4, 5, 6}}
>>> {element for value in d.values() for element in value}
{1, 2, 3, 4, 5, 6}
在我看来,这更具可读性:
>>> from itertools import chain
>>> set(chain.from_iterable(d.values()))
{1, 2, 3, 4, 5, 6}