我有一个字典列表,我想删除具有相同键和值对的字典。
Python列表中删除重复的字典,记录一下解决办法。


运行环境 Runtime environment

1
2
3
操作系统: Windos10  
IDE: webStrom 2021.3.1 x64
语言: Python 3.9.1

需求

某日,在B站直播间,采集黑名单的名录,保存的时候,有了一个需求。

黑名单禁言时间是有时间限制的,禁言到期以后,黑名单就会自动消失。

那定时采集黑名单保存更新的时候就必然会出现名单重复的情况。

所以,为列表中重复的字典进行去重。

需求示例

列表:[{‘a’: 123}, {‘b’: 123}, {‘a’: 123}]

希望达到的效果:[{‘a’: 123}, {‘b’: 123}]

另一个例子:

列表:[{‘a’: 123, ‘b’: 1234}, {‘a’: 3222, ‘b’: 1234}, {‘a’: 123, ‘b’: 1234}]

希望达到的效果:[{‘a’: 123, ‘b’: 1234}, {‘a’: 3222, ‘b’: 1234}]

代码

试过,都说好。

1
[dict(t) for t in {tuple(d.items()) for d in l}]

总结

该方法,主要是将字典列表转换为元组列表,其中元组包含字典的键值对。

判断元组是否已经存在即可。

执行比较难理解的点主要是列表生成式中for循环的嵌套,其实也没什么了。