繁体   English   中英

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')]

所需的 output:

[{'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. 解包集合以创建新集合

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM