我循环遍历列表列表以创建字典字典,其中键是唯一的int,值是包含联系信息的字典。列表列表中的第一个列表是嵌套字典的键。有没有办法嵌套循环这个而不是键入所有索引?如果有更多的信息列,这将变得很难。
all_employees_dict = {}
for index, each in enumerate(all_employees[1:]):
all_employees_dict[index] = {
all_employees[0][0]:each[0],
all_employees[0][1]:each[1],
all_employees[0][2]:each[2],
all_employees[0][3]:each[3],
all_employees[0][4]:each[4],
}
答案 0 :(得分:1)
是的,列表理解:
all_employees_dict = {}
for index, each in enumerate(all_employees[1:]):
all_employees_dict[index] = {all_employees[0][j]:each_val for j, each_val in enumerate(each)}
答案 1 :(得分:0)
您可以将(键,值)对的列表映射到这样的字典:
>>> print dict([(1, 'a'), (2, 'b')])
{1: 'a', 2: 'b'}
鉴于此,您可以使用zip将第一个列表中的键与其余列表中的值配对:
employee_keys = all_employees[0]
result = {}
for index, employee_values in enumerate(all_employees[1:]):
result[index] = dict(zip(employee_keys, employee_values))
要使用一个很酷的生成器表达式创建它,你可以这样做,它创建一个iterable,使用与以前相同的技术给每个员工的dict,然后依赖于enumerate
创建(索引,值)对的事实然后dict
可以消费。
employee_keys = all_employees[0]
result = dict(
enumerate(
dict(zip(employee_keys, employee_values))
for employee_values in all_employees[1:]
)
)
答案 2 :(得分:0)
根据与列表[0,1,2,3 ...]相似的索引制作字典是没有意义的。所以:
all_employees_dict = {}
for index, each in enumerate(all_employees[1:]):
all_employees_dict[index] = {
all_employees[0][0]:each[0],
all_employees[0][1]:each[1],
all_employees[0][2]:each[2],
all_employees[0][3]:each[3],
all_employees[0][4]:each[4],
}
可能就像:
all_employees_dict = [{k: v for k, v in zip(all_employees[0], employee)} for employee in all_employees[1:]]
但是你得到一个list
,你可以使用它的索引来访问,而不是带有密钥的dict
。