Python 3.x 反向词典理解方法不起作用

Python 3.x 反向词典理解方法不起作用,python-3.x,dictionary,comparison,dictionary-comprehension,Python 3.x,Dictionary,Comparison,Dictionary Comprehension,我有两本字典: 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':

我有两本字典:

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'}
我想找出这两本词典之间的区别。我有一种方法可以找到相似文件的数量。如您所见,这两个词典之间有两个共享文件<代码>'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\u firmpan
中获取不在
NFHL\u 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

如果NFHL\u firmpan和Prelim\u firmpan[k]中有k,则条件为
NFHL_firmpan[k]
永远不会是真的。 如果k不在NFHL\u 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'}

是的,这很有效。我需要测试这些数字,因为实际上字典里有数百个条目。但这似乎是正确的,谢谢!