我有两个字典列表。
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