Обратный словарный метод не работает - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть 2 словаря:

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

1 Ответ

0 голосов
/ 20 сентября 2018

условие 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'}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...