从 Python 列表中删除重复的字典
给定一个字典列表,目标是删除所有共享相同键的字典 -值对。例如,将列表 [{'a': 123}, {'b': 123}, {'a': 123}] 转换为 [{'a': 123}, {'b': 123}] 将实现这一目标。
要实现这一目标,您可以采用一种简单而强大的技术:
[dict(t) for t in {tuple(d.items()) for d in l}]
此方法适用于三个不同的步骤:
代码片段中的变量代表以下内容:
如果维护字典的原始顺序至关重要,您可以使用以下修改后的方法:
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中文网其他相关文章!