编程语言
首页 > 编程语言> > 在Python中,如果两个值相同,则从嵌套字典中删除重复的条目

在Python中,如果两个值相同,则从嵌套字典中删除重复的条目

作者:互联网

考虑这种字典格式.

{1:{'name':'chrome', 'author':'google', 'url':'http://www.google.com/' },
 2:{'name':'firefox','author':'mozilla','url':'http://www.mozilla.com/'}}

我要删除所有具有相同名称和作者的项目.

通过将所有键放入集合中,我可以轻松地删除基于键的重复条目,并且可以将其扩展为在特定值上使用,但这似乎是一项昂贵的操作,需要多次遍历字典.我不知道如何以有效的方式使用两个值来执行此操作.这是一本包含数千个项目的字典.

解决方法:

遍历字典,跟踪所遇到的(名称,作者)元组,并删除已遇到的元组:

def remove_duplicates(d):
    encountered_entries = set()
    for key, entry in d.items():
        if (entry['name'], entry['author']) in encountered_entries:
            del d[key]
        else:
            encountered_entries.add((entry['name'], entry['author']))

标签:python-2-5,dictionary,python
来源: https://codeday.me/bug/20191105/1997026.html