Python - 将集合和元组展平为一个集合列表

Python - Flatten sets and tuples into one list of sets

希望有人能帮我解决这个问题。我有一组集合和元组的列表,我想将其展平为一个集合列表。

我有:

 [({'item1', 'item2'}, 'item_a'),
 ({'item1', 'item2'}, 'item_b'),
 ({'item2', 'item3'}, 'item_a'),
 ({'item2', 'item3'}, 'item_b')]

期望的输出:

[{'item1', 'item2', 'item_a'},
 {'item1', 'item2', 'item_b'},
 {'item2', 'item3', 'item_a'},
 {'item2', 'item3', 'item_b'}]

我已经尝试了这些功能,但是没有用:

list_flat = [item for sublist in list for item in sublist]

flat_list = []
for sublist in t:
    for item in sublist:
        flat_list.append(item)

使用可迭代解包:

>>> l1 = [
...  ({'item1', 'item2'}, 'item_a'),
...  ({'item1', 'item2'}, 'item_b'),
...  ({'item2', 'item3'}, 'item_a'),
...  ({'item2', 'item3'}, 'item_b')
... ]
>>> l2 = [{b, *a} for a, b in l]
>>> l2
[{'item2', 'item_a', 'item1'}, {'item2', 'item_b', 'item1'}, {'item2', 'item_a', 'item3'}, {'item2', 'item_b', 'item3'}]

(嵌套集无序)

列表理解使用序列解包两次:

  1. 解压原始列表中的 (set, string) 元组。
  2. 解压集合以创建新集合