如何检查和删除字典中项目的重复值?
我有大量的数据集,因此我正在寻找一种有效的方法。以下是包含重复项的字典中的值的示例:

'word': [('769817', [6]), ('769819', [4, 10]), ('769819', [4, 10])]


需要成为

'word': [('769817', [6]), ('769819', [4, 10])]

最佳答案

从本质上讲,此问题归结为从无法散列的类型列表中删除重复项,因为这些类型无法转换为集合。

一种可能的方法是在建立新列表值的同时检查当前值的成员资格。

d = {'word': [('769817', [6]), ('769819', [4, 10]), ('769819', [4, 10])]}
for k, v in d.items():
    new_list = []
    for item in v:
        if item not in new_list:
            new_list.append(item)
    d[k] = new_list


或者,使用groupby()以获得更简洁的答案,尽管可能会更慢(必须首先对列表进行排序(如果已排序,则比进行成员资格检查要快))。

import itertools

d = {'word': [('769817', [6]), ('769819', [4, 10]), ('769819', [4, 10])]}
for k, v in d.items():
    v.sort()
    d[k] = [item for item, _ in itertools.groupby(v)]


输出-> {'word': [('769817', [6]), ('769819', [4, 10])]}

09-25 18:19