从python中的列表中删除重复项

时间:2018-05-07 13:50:56

标签: python python-3.x

下面的代码,通过获取请求获得答案并将结果写入列表"结果"

for i in url:
    df = pd.read_html(i,header=0)[0]
    df = df.as_matrix().tolist()
    for item in df:           
        RESULT.append(item)

我使用下面的代码排除重复的条目:

def unique_items(RESULT):
found = set()
for item in RESULT:
    if item[0] not in found:
        yield item
        found.add(item[0])
NOT_DUBLICATE = (list(unique_items(RESULT)))
print(NOT_DUBLICATE)

在我看来,这不是最佳的,因为有必要获取所有行的列表以排除重复项。

如何在将行加载到列表RESULT之前找到重复项?

例如,我写入列表RESULT:

的行
[[55323602, 'system]
,[55323603, 'system]]
[[55323602, 'system]
,[55323603, 'system]]

2 个答案:

答案 0 :(得分:1)

如果列表item中不存在item,请将RESULT附加到列表中,而不是使用其他方法排除重复的条目。那你就不需要方法unique_items()

您可以在使用以下内容将行加载到RESULT列表之前找到重复项:

for i in url:
    df = pd.read_html(i,header=0)[0]
    df = df.as_matrix().tolist()
    for item in df:  
        if item not in RESULT         
            RESULT.append(item)

答案 1 :(得分:1)

只需使用集合而不是列表。

result = set()
for i in url:
    df = pd.read_html(i,header=0)[0]
    df_list = df.as_matrix().tolist()
    for item in df_list:          
       result.add(tuple(item))

以上代码将排除任何重复项。与您的案例的唯一区别在于result的元素将是元组而不是列表。

最后,您可以通过以下方式将该集重新设置为列表:

result = list(result)