2012-03-22 6 views

ответ

3

Сохраняйте set первых значений, которые вы видите до сих пор, и сохраняйте подсписные буквы, только если их первое значение не установлено.

Поскольку set.add всегда возвращает None, keys.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

1

Если последовательность в списке не имеет значения, вы можете попробовать это:

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

или

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

Разница заключается в том, что второй один возвращает первый список для то же самое первое значение, другое - противоположно.

Смежные вопросы