python - 在字典列表中查找常用字典值 - python
问题描述
我有一个这样的字典列表:
[{'Y': 80, 'X': 70, 'C': 0, 'L': 'B'}, {'Y': 81, 'X': 71, 'C': 1, 'L': 'C'}, {'Y': 82, 'X': 72, 'C': 2, 'L': 'D'}, {'Y': 82, 'X': 72, 'C': 3, 'L': 'E'}, {'Y': 83, 'X': 73, 'C': 4, 'L': 'F'}]
分解得更容易阅读
{'Y': 80, 'X': 70, 'C': 0, 'L': 'B'}
{'Y': 81, 'X': 71, 'C': 1, 'L': 'C'}
{'Y': 82, 'X': 72, 'C': 2, 'L': 'D'}
{'Y': 82, 'X': 72, 'C': 3, 'L': 'E'}
{'Y': 83, 'X': 73, 'C': 4, 'L': 'F'}
我想找到'Y'和'X'相同的两个字典。然后删除两个字典之一并更新生成的'C'
{'Y': 80, 'X': 70, 'C': 0, 'L': 'B'}
{'Y': 81, 'X': 71, 'C': 1, 'L': 'C'}
{'Y': 82, 'X': 72, 'C': 2, 'L': 'D'}
{'Y': 83, 'X': 73, 'C': 3, 'L': 'F'}
解决方案
又快又脏:
d = [
{'Y': 80, 'X': 70, 'C': 0, 'L': 'B'},
{'Y': 81, 'X': 71, 'C': 1, 'L': 'C'},
{'Y': 82, 'X': 72, 'C': 2, 'L': 'D'},
{'Y': 82, 'X': 72, 'C': 3, 'L': 'E'},
{'Y': 83, 'X': 73, 'C': 4, 'L': 'F'}
]
Xs = []
Ys = []
c = 0
out = []
for i in range(len(d)):
obj = dict(d[i]) # Copy the dict at index i
if (obj["X"], obj["Y"]) in XYs:
XYs.append((obj["X"], obj["Y"]))
else:
obj["C"] = c
c = c + 1
out.append(obj)
XYs.append((obj["X"], obj["Y"]))
编辑:通过存储唯一元组来改进它
推荐阅读
- jenkins - org.tmatesoft.svn.core.SVNException: svn/rbESB/!svn/vcc/default) 检出失败
- spring-data-jpa - Weblogic 10.3.3 :: java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getSharedCacheMode()
- node.js - 使用 Node.js 从 SFTP 服务器获取最新文件
- python - 通过请求调用 API 时处理 CAPTCHA
- mongodb - 将对象数组转换为数组数组
- laravel-5 - Eloquent 和 Laravel 中的多个 Where 子句
- vue.js - 如何将数据从 vuex 状态获取到本地数据进行操作
- python - 如何从 cmd 执行一组默认功能
- java - 如何修复“无法将 JsonNull 强制转换为 JsonObject”
- google-cloud-platform - 数据流上的 grpc StatusRuntimeException