给定映射字典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)