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

标签 python dictionary python-2.5

考虑这种字典格式。

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

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

我可以通过将所有键放在一个集合中来轻松删除基于键的重复条目,并且可以扩展它以处理特定值,但这似乎是一个代价高昂的操作,需要多次遍历字典。我不知道如何以有效的方式使用两个值来做到这一点。这是一本包含数千条条目的字典。

最佳答案

遍历字典,跟踪遇到的 (name, author) 元组,并删除已经遇到的元组:

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 - 如果两个值相同,则在 Python 中从嵌套字典中删除重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4104957/

相关文章:

Python统计模块: How to extract confidence/prediction intervals from GPy?

python - 如何使用带有 cookie 和数据的 unittest 模块发出虚假的发布请求?

python - 名称错误 : name 're' is not defined

python - 在 Python 字典中保留不同值的最小键

javascript - 过滤数组并获取第一个值作为唯一 id 的对象数组

python - 什么时候支持 Python 2.5?

python 2.5.4 : how to find sum of logarithm values

python - 如何使用掩码计算直方图 OPENCV?

sorting - 按值对 Tcl 字典排序

Python装饰子类的所有方法,并提供重写的方法