获取与其他键关联的键的值';Python字典中的s值

获取与其他键关联的键的值';Python字典中的s值,python,json,dictionary,Python,Json,Dictionary,我有两个字典列表和json列表,我需要根据另一个字典中键的值获取特定键的值。我的数据如下所示: opps = [{'Product2Id': '100','Price': '1645'}, {'Product2Id': '101','Price': '5478'}] products = [{'Id': '100', 'Name': 'Insertion'}, [{'Id': '101', 'Name': 'Print'}] sales_json = {'Insertion': {'name':

我有两个字典列表和json列表,我需要根据另一个字典中键的值获取特定键的值。我的数据如下所示:

opps = [{'Product2Id': '100','Price': '1645'}, {'Product2Id': '101','Price': '5478'}]
products = [{'Id': '100', 'Name': 'Insertion'}, [{'Id': '101', 'Name': 'Print'}]
sales_json = {'Insertion': {'name': 'BAZ', 'id': '95'}, 'Print': {'name': 'BIC', 'id': '105'}
for index, my_dict in enumerate(opps):
    new_name = sales_json[prod_num_to_name[my_dict["Product2Id"]]]["name"]
    print new_name
我需要通过opp循环,并从
sales\u json
为新变量赋值。但对于存储在
产品
opp

我尝试了以下方法:

for index, my_dict in enumerate(opps):
    new_name = sales_json[products[my_dict["Product2Id"]]["Name"]]["name"]
给我一个错误。 所需输出为:

print(new_name)
BAZ,
BIC

您正试图将列表产品用作词典。相反,您应该首先构建一个产品编号来命名字典:

prod_num_to_name = {d['Id']: d['Name'] for d in products}
然后,您可以运行所需的循环,修改如下:

opps = [{'Product2Id': '100','Price': '1645'}, {'Product2Id': '101','Price': '5478'}]
products = [{'Id': '100', 'Name': 'Insertion'}, [{'Id': '101', 'Name': 'Print'}]
sales_json = {'Insertion': {'name': 'BAZ', 'id': '95'}, 'Print': {'name': 'BIC', 'id': '105'}
for index, my_dict in enumerate(opps):
    new_name = sales_json[prod_num_to_name[my_dict["Product2Id"]]]["name"]
    print new_name

要使用列表返回符合条件的姓名列表,请执行以下操作:

names = [ sales_json[product['Name']]['name'] for opp in opps for product in products if product['Id'] == opp['Product2Id']]
print (names)
打印姓名列表:

['BAZ', 'BIC']

验证数据的结构。某些区域缺少右大括号。