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

jef*_*jef 1 python python-3.x

我想从嵌套列表中提取唯一数据,请参见下文。我实现了两种方式。第一个效果很好,但第二个失败了。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']] 
Run Code Online (Sandbox Code Playgroud)

小智 5

你试一试:

new_data = [list(y) for y in set([tuple(x) for x in data])]
Run Code Online (Sandbox Code Playgroud)

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