首页 > 解决方案 > 如何在python中转换字典中的多个列表

问题描述

    # Create a dictionary out of below inputs
lst1 = ['emp1', 'emp2', 'emp3']
emp_key = ['e_name', 'e_id', 'e_sal']
emp1_val = ['John', 'SG101', '$10,000']
emp2_val = ['Smith', 'SG102', '$9,000']
emp3_val = ['Peter', 'SG103', '$9,500']

# Expected Output:- 
                    {'emp1':{'e_name':'John', 'e_id':'SG101', 'e_sal':$10,000}, 
                     'emp2':{'e_name':'Smith', 'e_id':'SG102', 'e_sal':$9,000}, 
                     'emp3':{'e_name':'Peter', 'e_id':'SG103', 'e_sal':$9,500}}

我需要用 zip 尝试过这样的输出,但它不起作用,请建议最好的方法。

提前致谢

标签: pythonnumpyanacondajupyter

解决方案


您可以使用嵌套列表推导,使用两次dict以上zip来形成嵌套字典:

lst1 = ['emp1', 'emp2', 'emp3']
emp_key = ['e_name', 'e_id', 'e_sal']
emp1_val = ['John', 'SG101', '$10,000']
emp2_val = ['Smith', 'SG102', '$9,000']
emp3_val = ['Peter', 'SG103', '$9,500']

result = dict(zip(lst1, [dict(zip(emp_key, e)) for e in [emp1_val, emp2_val, emp3_val]]))
print(result)

输出:

{
 'emp1': {'e_name': 'John', 'e_id': 'SG101', 'e_sal': '$10,000'},
 'emp2': {'e_name': 'Smith', 'e_id': 'SG102', 'e_sal': '$9,000'},
 'emp3': {'e_name': 'Peter', 'e_id': 'SG103', 'e_sal': '$9,500'}
}

推荐阅读