Форум сайта python.su
1
Уважаемы коллеги, подскажите как можно убрать дубликаты и оставить лишь одно первое значение.
Есть список
[("26'", '1 - 0'), ("50'", '2 - 0'), ("62'", '3 - 0'), ("64'", '4 - 0'), ("98'", '4 - 0'), ("190'", '5 - 0')]
Отредактировано paraman (Авг. 9, 2013 11:20:21)
Офлайн
47
from itertools import groupby
from operator import itemgetter
lst=[("26'", '1 - 0'), ("50'", '2 - 0'), ("62'", '3 - 0'), ("64'", '4 - 0'), ("98'", '4 - 0'), ("190'", '5 - 0')]
lst = [next(x[1]) for x in groupby(lst, key=itemgetter(1))]
Офлайн
1
bismigalisСпасибо
Офлайн
857
bismigalislst должен быть предварительно отсортированgroupby(lst, key=itemgetter(1))
Офлайн
47
py.user.next верно, незнал
from itertools import groupby from operator import itemgetter lst=[("26'", '1 - 0'), ("50'", '2 - 0'), ("62'", '3 - 0'), ("64'", '4 - 0'), ("98'", '4 - 0'), ("190'", '5 - 0')] lst.sort(key=itemgetter(1)) lst = [next(x[1]) for x in groupby(lst, key=itemgetter(1))]
Офлайн