python-3.x - 只比较字典中的两个值
问题描述
我试图找到一个解决方案,通过仅比较 2 个值来找出字典中哪些项目是双倍的。在我的情况下,“键”和“单元格”。顺序应该是首先在键中比较值,然后在单元格中比较值。
源字典
{
1: { Name: 'item1', Cell: 'DC01', key: 'R12' },
2: { Name: 'item2', Cell: 'DC02', key: 'R12' },
3: { Name: 'item3', Cell: 'DC03', key: 'R13' },
4: { Name: 'item4', Cell: 'DC02', key: 'R12' },
5: { Name: 'item5', Cell: 'DC05', key: 'R15' }
}
输出应该是:
{
1: { Name: 'item1', Cell: 'DC01', key: 'R12', answ : 'false' },
2: { Name: 'item2', Cell: 'DC02', key: 'R12' answ : 'true' },
3: { Name: 'item3', Cell: 'DC03', key: 'R13' answ : 'false' },
4: { Name: 'item4', Cell: 'DC02', key: 'R12' answ : 'true' },
5: { Name: 'item5', Cell: 'DC05', key: 'R15' answ : 'false' }
}
问题是从性能的角度来看,最好的方法是什么。
解决方案
代码:
x = {\
1: { "Name": 'item1', "Cell": 'DC01', "key": 'R12' },\
2: { "Name": 'item2', "Cell": 'DC02', "key": 'R12' },\
3: { "Name": 'item3', "Cell": 'DC03', "key": 'R13' },\
4: { "Name": 'item4', "Cell": 'DC02', "key": 'R12' },\
5: { "Name": 'item5', "Cell": 'DC05', "key": 'R15' }
}
result = {}
key_set = set()
cell_set = set()
i = 0
for _,item in x.items():
if item["key"] in key_set or item["Cell"] in cell_set:
item.update({"answ":"true"})
else:
item.update({"answ":"false"})
i+=1
result.update({i:item})
key_set.add(item["key"])
cell_set.add(item["Cell"])
print(result)
结果:
{
1: {'Name': 'item1', 'Cell': 'DC01', 'key': 'R12', 'answ': 'false'},
2: {'Name': 'item2', 'Cell': 'DC02', 'key': 'R12', 'answ': 'true'},
3: {'Name': 'item3', 'Cell': 'DC03', 'key': 'R13', 'answ': 'false'},
4: {'Name': 'item4', 'Cell': 'DC02', 'key': 'R12', 'answ': 'true'},
5: {'Name': 'item5', 'Cell': 'DC05', 'key': 'R15', 'answ': 'false'}
}
推荐阅读
- javascript - 如何使用材料设计 mdc-list 制作嵌套列表
- html - Summernote 执行转义的 html
- javascript - 建议使用 FCM 消息转换 onCreate firebase 云函数触发器以支持异步/等待和数据库读取
- c - STM32F103C8 Bluepill板HAL_delay()问题
- sublimetext3 - 尝试在 WSL ubuntu18.04 操作系统上安装/apt 更新时出现 404 Not Found [IP: 91.189.95.85 80] 错误
- maven - 缺少junit依赖的Fat jar
- unix - solaris 11.4 中的重启服务
- android - 我无法让 Here Maps 在 Android Studio 中工作
- laravel - laravel 传递数组查看对象
- java - Eclipse 中的“当前正在使用的工作区”