python-3.x - 反向词典理解方法不起作用
问题描述
我有两本词典:
Prelim_firmpan = {'06059C0127J': 'J','06059C0090J': 'J','06059C0288K': 'K',
'06059C0190J': 'J','06059C0436J': 'J','06059C0158J': 'J','06059C0229K': 'K',
'06059C0227K': 'K'}
NFHL_firmpan = {'06059C0127J': 'J','06059C0090J': 'J','06059C0319J': 'J',
'06059C0313J': 'J','06059C0329J': 'J','06059C0258J': 'J','06059C0444J': 'J'}
我想找到这两个字典之间的差异数。我有一种方法可以找到类似文件的数量。如您所见,这两个字典之间有 2 个共享文件;'06059C0127J': 'J'
和'06059C0090J': 'J'
。以下给出了结果:
shared = {k: Prelim_firmpan[k] for k in Prelim_firmpan if k in NFHL_firmpan and Prelim_firmpan[k] == NFHL_firmpan[k]}
num_shared = len(shared)
print(num)
现在我想做类似的事情来获取Prelim_firmpan
不在. NFHL_firmpan
以下仅返回一个空集。有关使这项工作的任何建议?
unshared = {k: Prelim_firmpan[k] for k in Prelim_firmpan if k in NFHL_firmpan and Prelim_firmpan[k] != NFHL_firmpan[k]}
num_unshared = len(unshared)
print(unshared)
>>>0
解决方案
条件if k in NFHL_firmpan and Prelim_firmpan[k] != NFHL_firmpan[k]
永远不会为真。为什么不使用if k not in NFHL_firmpan
?
unshared = {k: Prelim_firmpan[k] for k in Prelim_firmpan if k not in NFHL_firmpan}
num_unshared = len(unshared)
print(unshared)
#{'06059C0288K': 'K', '06059C0190J': 'J', '06059C0436J': 'J', '06059C0158J': 'J', '06059C0229K': 'K', '06059C0227K': 'K'}
推荐阅读
- python - 了解 Pandanable 在此代码中的工作原理
- javascript - 如何在反应中拖动输入字段?
- python - 在对 Dask 包中的 JSON 记录进行重复数据删除时,是否有比 .distinct() 更好的选择 - 可以减少内存使用?
- laravel-5 - 如何从多个表中查询 Laravel DB
- reactjs - React本机蓝牙escpos打印机无法生成APK
- google-analytics - 如何在 GTM 和 GA 的支持下跟踪目标提交表单的参考代码
- javascript - 如何在 Chrome 扩展程序中解决 reCaptcha 后自动单击提交按钮
- docker - 使用来自 cert-manager 的秘密的 Helm 图表
- webclient - Spring WebClient reactor.netty.internal.shaded.reactor.pool.PoolAcquireTimeoutException
- php - 用户登录在带有 sql server 的 laravel 中不起作用。以前创建的数据库