创建一个本身就是dict的dict值时,嵌套循环索引

时间:2015-03-22 17:51:55

标签: python for-loop dictionary nested-loops

我循环遍历列表列表以创建字典字典,其中键是唯一的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],
                                }

3 个答案:

答案 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