2012-03-22 200 views

回答

3

保留一個set到目前爲止看到的第一個值,並且只保留子列表,如果他們的第一個值不在集合中。

因爲set.add總是返回Nonekeys.add(sublist[0]) or sublist相同None or sublist這是一樣的sublist,因此它不會影響什麼被保留在列表中,同時讓您值添加到組列表解析裏。

keys = set() 
biglist = [keys.add(sublist[0]) or sublist 
       for sublist in biglist 
        if sublist[0] not in keys] 
del keys # if you don't need it any more 
+0

哇,這是相當好的答案,它的工作原理。我花了幾分鐘才弄明白。感謝您的解釋 – siamii 2012-03-22 05:49:34

1

如果列表的順序沒有關係,你可以試試這個:

dict([(sublist[0], sublist) for sublist in biglist]).values() 

dict([(sublist[0], sublist) for sublist in reversed(biglist)]).values() 

不同的是,第二個返回的第一個列表相同的第一個值,另一個相反。