首页 > 后端开发 > Python教程 > 如何从 Python 列表中删除重复的字典,同时保留或忽略顺序?

如何从 Python 列表中删除重复的字典,同时保留或忽略顺序?

Susan Sarandon
发布: 2024-11-28 00:21:10
原创
169 人浏览过

How Can I Remove Duplicate Dictionaries from a Python List While Preserving or Ignoring Order?

从 Python 列表中删除重复的字典

给定一个字典列表,目标是删除所有共享相同键的字典 -值对。例如,将列表 [{'a': 123}, {'b': 123}, {'a': 123}] 转换为 [{'a': 123}, {'b': 123}] 将实现这一目标。

要实现这一目标,您可以采用一种简单而强大的技术:

[dict(t) for t in {tuple(d.items()) for d in l}]
登录后复制

此方法适用于三个不同的步骤:

  1. 将每个字典转换为一个元组,其中元组存储字典的键值对。
  2. 将元组列表转换为集合,有效删除重复项集合不能保存相同值的多个实例。
  3. 使用 dict() 从元组重建字典

代码片段中的变量代表以下内容:

  • l:原始字典列表
  • d: list
  • t:表示该字典的键值的元组对

如果维护字典的原始顺序至关重要,您可以使用以下修改后的方法:

seen = set()
new_l = []
for d in l:
    t = tuple(d.items())
    if t not in seen:
        seen.add(t)
        new_l.append(d)
登录后复制

此代码包含维护可见集的附加步骤跟踪已经遇到的元组(以及字典)。如果在seen集合中没有找到某个元组,则将其添加到集合中,并将对应的字典追加到new_l列表中。

需要注意的是,直接使用相等(==)来比较字典如果以不同方式修改词典,则可能并不总是产生所需的结果。如果键值对的顺序很重要,建议在创建元组之前对字典的项目进行排序。

以上是如何从 Python 列表中删除重复的字典,同时保留或忽略顺序?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板