【发布时间】:2014-08-09 08:10:56
【问题描述】:
我有一个看起来像这样的列表:
c = [['470', '4189.0', 'asdfgw', 'fds'],
['470', '4189.0', 'qwer', 'fds'],
['470', '4189.0', 'qwer', 'dsfs fdv']
...]
c 有大约 30,000 个内部列表。我想做的是根据每个内部列表中的第 4 项消除重复项。所以上面的列表看起来像:
c = [['470', '4189.0', 'asdfgw', 'fds'],['470', '4189.0', 'qwer', 'dsfs fdv'] ...]
这是我目前所拥有的:
d = [] #list that will contain condensed c
d.append(c[0]) #append first element, so I can compare lists
for bact in c: #c is my list of lists with 30,000 interior list
for items in d:
if bact[3] != items[3]:
d.append(bact)
我认为这应该可行,但它只是运行和运行。我让它运行了 30 分钟,然后杀死了它。我不认为程序应该花这么长时间,所以我猜我的逻辑有问题。
我觉得创建一个全新的列表非常愚蠢。任何帮助将不胜感激,请在我学习时随时挑剔。如果我的词汇不正确,请更正我的词汇。
【问题讨论】:
-
您如何知道哪些重复项需要删除?
-
您是否考虑过输出中已经存在的第四个元素的单独
set?这将使成员资格查找更快。 -
你是对的。我想我目前不需要其他信息。你可以直接创建一个'set',还是我遍历我的列表创建一个列表,然后调用set函数?
-
@user3754225 你可以
add去设置,不要重复c两次! -
你应该看看熊猫。如果(我假设)这不会是您对这些数据执行的最后一个类似表的操作,那么 pandas 将是一项非常好的投资。而你在 pandas 中的操作只是
df.drop_duplicates('col_4')
标签: python duplicate-removal nested-lists