python - 根据键的值过滤字典列表
问题描述
如果字典列表中的两个值相同,我希望仅使用其中一个字典过滤列表。我不关心第二个(或第三个匹配的字典)。
crcs = [
{'compress_name': 'file1.bin', 'crc': '55A0669C', 'name': 'R:\\filepath\\system\\compress1.zip'},
{'compress_name': 'file3.bin', 'crc': '55A0669C', 'name': 'R:\\filepath\\system\\compress2.zip'},
{'compress_name': 'file2.bin', 'crc': '66B07710', 'name': 'R:\\filepath\\system\\compress2.zip'},
{'compress_name': 'file5.bin', 'crc': '66B07710', 'name': 'R:\\filepath\\system\\compress3.zip'}
]
预期结果是具有不同“crc”值的两个字典的列表。
[
{'compress_name': 'file1.bin', 'crc': '55A0669C', 'name': 'R:\\filepath\\system\\compress1.zip'},
{'compress_name': 'file2.bin', 'crc': '66B07710', 'name': 'R:\\filepath\\system\\compress2.zip'},
]
或匹配 55A0669C 和 66B07710 的 CRC 值的任何其他组合。字典列表可能有 400 个或更多项。
我正在使用 python 3.7
解决方案
如果只有 crc 需要唯一,那么你可以使用
crcs = [ {'compress_name': 'file1.bin', 'crc': '55A0669C', 'name': 'R:\filepath\system\compress1.zip'}, {'compress_name': 'file3.bin', 'crc': '55A0669C', 'name': 'R:\filepath\system\compress2.zip'}, {'compress_name': 'file2.bin', 'crc': '66B07710', 'name': 'R:\filepath\system\compress2.zip'}, {'compress_name': 'file5.bin', 'crc': '66B07710', 'name': 'R:\filepath\system\compress3.zip'} ]
crcs_all = []
crcs_uniq = []
for i in range(len(crcs)):
crc = crcs[i]['crc']
if crc not in crcs_all:
crcs_all.append(crc)
crcs_uniq.append(crcs[i])
print(crcs_uniq)
那会给你
[ {'compress_name': 'file1.bin', 'crc': '55A0669C', 'name': 'R:\x0cilepath\\system\\compress1.zip'},
{'compress_name': 'file2.bin', 'crc': '66B07710', 'name': 'R:\x0cilepath\\system\\compress2.zip'}]
推荐阅读
- python - 如何跳过for循环中的错误行
- ios - defaultNavigationOptions 中的默认背景颜色
- javascript - 使用 nodemailer 发送 html gmail 后,css 缺少一些规则
- spring-boot - Docker-compose with consul and dynamic addressing of ports beetwen services
- excel - 如何简化;数十个具有相同底层 VBA 代码的 Excel 选项卡
- ruby-on-rails - 如何通过 ActiveRecord 中的关系显示 has_many 中的非唯一记录?
- python - keras中的张量点积
- entity-framework - Web api获取方法没有响应
- spring - 对于带有 access_token 的请求,我应该使用哪种 contentType?
- jquery - jQuery .attr() 未在 HTML 中设置后设置值并在之前删除此属性