将设定值组合成单一组

时间:2015-09-22 23:00:50

标签: python

我有以下dict对象:

obj = {
  'US': set(...),
  'FR': set(...),
  'BE': set(...)
}

我如何将它组合成一套?目前我正在以冗长的方式做到:

items = set(list(obj['US']) + list(obj['FR']) + list(obj['BE']))

4 个答案:

答案 0 :(得分:7)

有效的方法是使用set.union(* obj.values())

例如:

obj = {
  'US': set([1,2,3]),
  'FR': set([3,4,5]),
  'BE': set([5,6,7])
}

set.union(*obj.values())
Out[35]: {1, 2, 3, 4, 5, 6, 7}

答案 1 :(得分:1)

您可以在此处使用chain

 from itertools import chain
 set(chain(*obj.values()))

答案 2 :(得分:0)

稍微简洁的方法是使用|运算符:

items = obj['US'] | obj['FR'] | obj['BE']

答案 3 :(得分:0)

set类型支持|运算符来执行联合。它还支持.union方法。所以你想要的可能是

items = set.union(*obj.values())

items = obj['US'] | obj['FR'] | obj['BE']

如果你想要明确。