Ответ 1
Вы можете использовать набор:
unique_data = [list(x) for x in set(tuple(x) for x in testdata)]
Вы также можете увидеть эту страницу, в которой сравниваются различные методы, которые сохраняют или не сохраняют порядок.
Мне любопытно, какой был бы эффективный способ уникального определения таких объектов данных:
testdata =[ ['9034968', 'ETH'], ['14160113', 'ETH'], ['9034968', 'ETH'], ['11111', 'NOT'], ['9555269', 'NOT'], ['15724032', 'ETH'], ['15481740', 'ETH'], ['15481757', 'ETH'], ['15481724', 'ETH'], ['10307528', 'ETH'], ['15481757', 'ETH'], ['15481724', 'ETH'], ['15481740', 'ETH'], ['15379365', 'ETH'], ['11111', 'NOT'], ['9555269', 'NOT'], ['15379365', 'ETH']
]
Для каждой пары данных левая цифровая строка PLUS тип справа указывает уникальность элемента данных. И он возвращает список списков так же, как и testdata, но существуют только уникальные.
Привет
Вы можете использовать набор:
unique_data = [list(x) for x in set(tuple(x) for x in testdata)]
Вы также можете увидеть эту страницу, в которой сравниваются различные методы, которые сохраняют или не сохраняют порядок.
Я попробовал ответить @Mark и получил ошибку. Преобразование списка и каждого элемента в кортеж заставляло его работать. Не уверен, что это лучший способ.
list(map(list, set(map(lambda i: tuple(i), testdata))))
Конечно, то же самое можно выразить, используя понимание списка.
[list(i) for i in set(tuple(i) for i in testdata)]
Я использую Python 2.6.2.
Обновление
@Mark с тех пор изменил свой ответ. Его текущий ответ использует кортежи и будет работать. Так будет моя:)
Обновление 2
Благодаря @Mark. Я изменил свой ответ, чтобы вернуть список списков, а не список кортежей.
import sets
testdata =[ ['9034968', 'ETH'], ['14160113', 'ETH'], ['9034968', 'ETH'], ['11111', 'NOT'], ['9555269', 'NOT'], ['15724032', 'ETH'], ['15481740', 'ETH'], ['15481757', 'ETH'], ['15481724', 'ETH'], ['10307528', 'ETH'], ['15481757', 'ETH'], ['15481724', 'ETH'], ['15481740', 'ETH'], ['15379365', 'ETH'], ['11111', 'NOT'], ['9555269', 'NOT'], ['15379365', 'ETH']]
conacatData = [x[0] + x[1] for x in testdata]
print conacatData
uniqueSet = sets.Set(conacatData)
uniqueList = [ [t[0:-3], t[-3:]] for t in uniqueSet]
print uniqueList