我很好奇什么是独特的这种数据对象的有效方式:
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']
]
Run Code Online (Sandbox Code Playgroud)
对于每一个数据对,左侧的数字串PLUS在合适的类型告知的数据元素的唯一性.它返回与testdata相同的列表列表,但只存在唯一身份证.
问候
Mar*_*ers 87
你可以使用一套:
unique_data = [list(x) for x in set(tuple(x) for x in testdata)]
Run Code Online (Sandbox Code Playgroud)
您还可以看到此页面对各种方法进行基准测试,这些方法可以保留或不保留顺序.
我试过@Mark的回答并得到了一个错误.将列表和每个元素转换为元组使其工作.不知道这是否是最佳方式.
list(map(list, set(map(lambda i: tuple(i), testdata))))
Run Code Online (Sandbox Code Playgroud)
当然,使用列表理解可以表达同样的事情.
[list(i) for i in set(tuple(i) for i in testdata)]
Run Code Online (Sandbox Code Playgroud)
我使用的是Python 2.6.2.
更新
@Mark后来改变了他的回答.他目前的答案使用元组并且会起作用.我的意思是:)
更新2
感谢@Mark.我已经改变了我的答案,返回列表而不是元组列表.
使用uniqueinnumpy来解决这个问题:
import numpy as np
np.unique(np.array(testdata), axis=0)
Run Code Online (Sandbox Code Playgroud)
请注意,axis需要指定关键字,否则列表将首先被展平。
或者,使用vstack:
np.vstack({tuple(row) for row in testdata})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45998 次 |
| 最近记录: |