繁体   English   中英

从Python中的嵌套列表中提取唯一列表

[英]Extract unique list from nested list in Python

我想从嵌套列表中提取唯一数据,请参见下文。 我实现了两种方法。 第一个效果很好,但第二个失败。 计算期间new_data是否为空? 我该如何解决?

 data = [                                                                                                                                      
     ['a', 'b'],                                                                                                                               
     ['a', 'c'],                                                                                                                               
     ['a', 'b'],                                                                                                                               
     ['b', 'a']                                                                                                                                
 ]                                                                                                                                             

 # working                                                                                                                                          
 new_data = []                                                                                                                                 
 for d in data:                                                                                                                                
     if d not in new_data:                                                                                                                     
         new_data.append(d)                                                                                                                    
 print(new_data)                                                                                                                               
 # [['a', 'b'], ['a','c'], ['b','a']]                                                                                                          

 # Failed to extract unique list                                                                                                                                 
 new_data = []                                                                                                                                 
 new_data = [d for d in data if d not in new_data]                                                                                             
 print(new_data)                                                                                                                               
 # [['a', 'b'], ['a', 'c'], ['a', 'b'], ['b', 'a']] 

你试一试:

new_data = [list(y) for y in set([tuple(x) for x in data])]

您不能在列表列表上使用set() ,因为列表不可散列。 您将列表列表转换为元组列表。 应用set()删除重复项。 然后将重复的元组列表转换回列表列表。

您可以使用enumerate来测试当前值之前是否没有副本,以便仅采用副本的第一个实例:

new_data = [item for index, item in enumerate(data) if item not in data[:index]]

暂无
暂无

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

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