如何从元组列表中提取所有唯一元素并整理为列表?
提取元组列表中的唯一元素并整理为列表
给定元组列表:
codes = [('A', ['B', 'C']), ('D', ['E', 'C'])]
期望输出:
['A', 'B','C','D','E']
你当前的代码只提取了每个元组的第二个子列表,得到的是[['B', 'C'], ['E', 'C']],既没包含元组里的单个元素(A、D),也没做扁平化和去重处理,下面是可行的实现方案:
实现方案
方法一:分步遍历(可读性高)
codes = [('A', ['B', 'C']), ('D', ['E', 'C'])] all_items = [] # 遍历每个元组,收集所有元素 for code_tuple in codes: # 加入元组的第一个元素 all_items.append(code_tuple[0]) # 把第二个列表里的元素逐个加入 all_items.extend(code_tuple[1]) # 去重同时保留元素出现的顺序(Python 3.7+ 字典默认有序) unique_list = list(dict.fromkeys(all_items)) print(unique_list)
方法二:列表推导式(简洁写法)
codes = [('A', ['B', 'C']), ('D', ['E', 'C'])] # 先收集所有元素:元组第一个元素 + 所有子列表元素 all_items = [t[0] for t in codes] + [sub for t in codes for sub in t[1]] # 去重并转成列表 unique_list = list(dict.fromkeys(all_items)) print(unique_list)
两种方法最终都会输出:
['A', 'B', 'C', 'D', 'E']
如果不需要保留顺序,也可以用set去重后再转列表,但set会打乱顺序:
unique_list = list(set(all_items)) # 输出可能是 ['C', 'A', 'B', 'E', 'D'] 这类无序结果
内容的提问来源于stack exchange,提问作者Alpha Beta
相关产品推荐
相关产品推荐

