【问题标题】:Reverse dictionary comprehension method not working反向词典理解方法不起作用
【发布时间】:2019-02-24 05:09:12
【问题描述】:

我有两本词典:

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

【问题讨论】:

    标签: python-3.x dictionary comparison dictionary-comprehension


    【解决方案1】:

    条件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'}
    

    【讨论】:

    • 是的,这很好用。我需要测试这些数字,因为实际上字典有数百个项目。但这似乎是正确的,谢谢!
    猜你喜欢
    • 2021-10-20
    • 2019-03-29
    • 2017-10-15
    • 1970-01-01
    • 2022-12-31
    • 1970-01-01
    • 1970-01-01
    • 2019-06-15
    相关资源
    最近更新 更多