如何在保留顺序的同时从beautifulsoup结果集中删除重复值?

时间:2013-05-02 10:54:04

标签: python python-2.7 beautifulsoup duplicate-removal

我有一个场景,我在美丽的汤结果集中搜索值,并根据其内容对它们进行不同的处理,例如:

for i in bs_result_set:
    if 'this unique string' in i.text:
        print 'aaaa'
    else:
        print 'bbbb'

但是我已经意识到唯一条件实际上在结果集中出现了两次但是我不需要第二个重复值,因此想要首先从结果集中删除它。

我尝试过删除list中的重复值(同时保留顺序)的方法,但这些似乎不适用于一个漂亮的汤结果集的对象。例如,我使用this post中的逻辑来尝试:

from collections import OrderedDict 
OrderedDict.fromkeys(bs_result_set).keys()

但这似乎没有删除重复的值。

所以我的问题是如何在保留顺序的同时从美丽的汤结果集中删除重复值?

1 个答案:

答案 0 :(得分:0)

怎么样:

h = {}
for i in bs_result_set:
    if i not in h:
        if 'this unique string' in i.text:
            print 'aaaa'
        else:
            print 'bbbb'
        h[i] = 1

如果密钥不是 i 但是从 i (计算,字段等)找到,您可以

h = {}
for i in bs_result_set:
    key = <some formula involving i>
    if key not in h:
        if 'this unique string' in i.text:
            print 'aaaa'
        else:
            print 'bbbb'
        h[key] = 1