python - 计算列表中不同的字典
问题描述
我有一个字典列表:[d1, d2, ...., d3]
. 如何有效地(例如线性时间)计算列表中不同的字典?Python 可以正确比较字典:d1==d2
. 字典、列表和集合是不可散列的。
解决方案
假设您有一个字典列表,其中包含本身可散列的项目,那么您可以使用由另一个集合内部frozenset
制成的a:.items()
>>> data = [{'a':1, 'b':2}, {'c':2, 'a':2}, {'b':2, 'a':1}, {'d':4}]
>>> {frozenset(d.items()) for d in data}
{frozenset({('c', 2), ('a', 2)}), frozenset({('a', 1), ('b', 2)}), frozenset({('d', 4)})}
就拿它的长度。
所以在上述情况下,
>>> len({frozenset(d.items()) for d in data})
3
推荐阅读
- vb.net - 是否可以从 WinForms VB.net 传递 Argumentlist?
- python - 创建具有可变模式的 Pyspark 数据框
- go - 使用 socketio 从 goroutine 返回值
- azure - 尝试创建 Azure 逻辑应用连接,但出现错误
- reactjs - 在 webpack 生产构建中未呈现组件
- angular - 为什么我的客户指令不起作用?
- python - Webdriver Selenium 与 python
- r - 如何在 mutate 语句中对两列进行排序和粘贴?
- javascript - WKWebview - 拦截 JS CSS
- scala - 使用 Akka.io 从 Azure SQL 数据库中提取数据