如何从dict中删除重复值?

2024-10-04 03:26:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图删除dict中的重复值,但它不起作用:

samples_antibiotics_with_duplicates = {'S00541-09': ['Streptomycin', 'Sulfamethoxazole', 'Trimethoprim', 'Spectinomycin', 'Streptomycin', 'Streptomycin', 'Trimethoprim']}
samples_antibiotics = {}
    for key,value in samples_antibiotics_with_duplicates.iteritems():
      if value not in samples_antibiotics.values():
        samples_antibiotics[key] = value
print samples_antibiotics

打印:

^{pr2}$

Tags: keyinforvaluewithdictduplicatessamples
3条回答

如果您不关心保留原始顺序,set(my_list)将删除所有重复项。在

如果您想保留原始顺序,则list(OrderedDict.fromkeys(my_list))

你可以试试这个:

samples_antibiotics_with_duplicates = {'S00541-09': ['Streptomycin', 'Sulfamethoxazole', 'Trimethoprim', 'Spectinomycin', 'Streptomycin', 'Streptomycin', 'Trimethoprim']}

new_dict = {a:list(set(b)) for a, b in samples_antibiotics_with_duplicatates.items()}

下面的dict comprehension将从原始dict创建一个新dict,没有任何重复值:

samples_antibiotics = {k: list(set(v)) for k, v in samples_antibiotics_with_duplicates.items()}

列表(或任何容器)的set版本不包含任何重复项,因为集合不允许任何重复项(这就是它们像dict一样需要散列项的原因)。在

正如@CoryKramer在评论中所说,这里给出的解决方案(一般来说)不会保留值列表中项目的顺序。如果这对你很重要,那你就得去做别的事了。在

相关问题 更多 >