获取与其他键关联的键的值';Python字典中的s值
我有两个字典列表和json列表,我需要根据另一个字典中键的值获取特定键的值。我的数据如下所示:获取与其他键关联的键的值';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':
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']
验证数据的结构。某些区域缺少右大括号。