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'}]
(嵌套集无序)
列表理解使用序列解包两次:
- 解压原始列表中的 (set, string) 元组。
- 解压集合以创建新集合
希望有人能帮我解决这个问题。我有一组集合和元组的列表,我想将其展平为一个集合列表。
我有:
[({'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'}]
(嵌套集无序)
列表理解使用序列解包两次:
- 解压原始列表中的 (set, string) 元组。
- 解压集合以创建新集合