当循环中键的值等于键 Python 时,在 for 循环外访问键的值

access the value of the key outside of for loop when key's value in the loop equals the key Python

我有两个词典列表:

sftoap = [{'0060z000023GQYKAA4': 'ID-2522'}, 
{'0060z000023GQZNAA4': 'ID-2523'}, 
{'0060z000023GQidAAG': 'ID-2524'}]

opp_products = [{'Opportunity_ID__c': '0060z000023GQYKAA4', 'TotalPrice': 50408.22991509}, 
{'Opportunity_ID__c': '0060z000023GQZNAA4', 'TotalPrice': 50408.22991509},
{'Opportunity_ID__c': '0060z000023GQighTY', 'TotalPrice': 50408.22991509}]

我需要遍历 opp_products 并将 sftoap 字典列表中的键值分配给新变量。但仅当 'Opportunity_ID__c' 的值等于来自 sftoap

的键时

这是我尝试过的:

for index, opp_products_dict in enumerate(opp_products):
    for opp_products_key, opp_products_value in opp_products_dict.items():
        id = opp_products_dict["Opportunity_ID__c"]
        ap_opp_id = sftoap[id]

给我一个错误,因为我显然需要遍历 sftoap 但不想有嵌套循环。我想要的输出是:

print(ap_opp_id)
ID-2522
ID-2524

如果您想避免嵌套循环,您可以在进入循环之前从 sftoap 创建一个字典,如下所示:

sftoap_dict = {}
for d in sftoap:
    key, value = d.popitem()
    sftoap_dict[key] = value

这样您就可以在原始循环中使用 ap_opp_id = sftoap_dict[id]

您可以将 sftoap 字典列表重新组织为字典以避免嵌套循环。 例如:

sftoap_dict = {}
for dicts in sftoap:
    for key,val in dicts.items():
        sftoap_dict[key]=val

接下来,您可以在代码的第二部分包含异常

 for index, opp_products_dict in enumerate(opp_products):
    for opp_products_key, opp_products_value in opp_products_dict.items():
        idx = opp_products_dict["Opportunity_ID__c"]
        try:
            ap_opp_id = sftoap_dict[idx]
            print(ap_opp_id)
        except KeyError:
            pass