我发现很多线程都在删除数组中的重复项,但对于我的具体用例没有.我有一个二维列表,我需要删除重复,但我必须保持原始序列
mylist = [['Installation', '64%'], ['C2', '14%'], ['NA', '14%'], ['C2', '14%'], ['NA', '14%'], ['na', '7%']]
Run Code Online (Sandbox Code Playgroud)
我需要简单地删除重复项而不重新安排,所以..
newlist = [['Installation', '64%'], ['C2', '14%'], ['NA', '14%'], ['na', '7%']]
Run Code Online (Sandbox Code Playgroud)
感谢任何帮助
使用set保持看到项目的跟踪:
>>> mylist = [['Installation', '64%'], ['C2', '14%'], ['NA', '14%'], ['C2', '14%'], ['NA', '14%'], ['na', '7%']]
>>> seen = set()
>>> newlist = []
>>> for item in mylist:
... t = tuple(item)
... if t not in seen:
... newlist.append(item)
... seen.add(t)
...
>>> newlist
[['Installation', '64%'], ['C2', '14%'], ['NA', '14%'], ['na', '7%']]
Run Code Online (Sandbox Code Playgroud)
注意
您需要将列表转换为元组(列表不可清除); 无法添加要设置的列表.
>>> seen = set()
>>> seen.add([1,2])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> seen.add(tuple([1,2]))
>>>
Run Code Online (Sandbox Code Playgroud)
mylist = [['Installation', '64%'], ['C2', '14%'], ['NA', '14%'], ['C2', '14%'], ['NA', '14%'], ['na', '7%']]
result = []
for x in mylist:
if x not in result:
result.append(x)
print result
Run Code Online (Sandbox Code Playgroud)
[['Installation', '64%'], ['C2', '14%'], ['NA', '14%'], ['na', '7%']]
| 归档时间: |
|
| 查看次数: |
4002 次 |
| 最近记录: |