【问题标题】:access the value of the key outside of for loop when key's value in the loop equals the key Python当循环中的键值等于键Python时,在for循环之外访问键的值
【发布时间】:2020-04-30 19:55:45
【问题描述】:

我有两个字典列表:

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

【问题讨论】:

    标签: python dictionary for-loop mapreduce


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      您可以将 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
      

      【讨论】:

        猜你喜欢
        • 2013-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-06
        • 1970-01-01
        • 1970-01-01
        • 2018-02-28
        相关资源
        最近更新 更多