给定映射字典mapping

{
'John': 'A',
'Mary': 'B',
'Tim' :'C'
}


然后为我提供了dict spend

{
'John': 23,
'Mary': 1,
}


和字典revenue

{
'A': 12,
'B': 2,
'C': 23
}


然后:

for k, v in spend.items():
# do stuff


在此循环中,我想检查revenue中的条目是否在spend中没有对应的条目(基于我们的映射)。一个这样的示例是Tim(因为revenue中存在'C',但spend中不存在'Tim')。

再次循环(在此for循环内)的方法-这次遍历revenue.keys()并检查密钥是否不在spend.keys()中-不幸的是,这不是一种选择,因为这将导致每次len(revenue)重复次数比赛。

我们如何不循环地实现所需的反向检查?

最佳答案

如果您在mapping词典中反转键和值,然后循环浏览收入数字,则可以轻松实现此目的。在执行循环之前,您不需要永久地将其反转,只需将其反转并存储在新字典中即可。

范例-

reversedmapping = {v:k for k,v in mapping.items()}
for k,v in revenue.items():
    if (k not in reversedmapping) or (reversedmapping[k] not in spend):
        print(k)

09-25 20:35