keys = ['a', 'b','c','d']
vals = [[1, 2, 3, 5], [6, 7, 8, 10], [11, 12, 13, 15]]
dict(zip(keys, zip(*vals)))
{'a': (1, 6, 11), 'c': (3, 8, 13), 'b': (2, 7, 12), 'd': (5, 10, 15)}
Полезно посмотреть, что происходит, когда вы zip(*)
объект, это довольно полезный трюк:
zip(*vals)
[(1, 6, 11), (2, 7, 12), (3, 8, 13), (5, 10, 15)]
Похоже (и вы увидите другой ответ) как транспонирование! Здесь есть гоча. Если один из списков короче других, zip(*)
преждевременно прекратит работу:
vals = [[1, 2, 3, 5], [6, 7, 8, 10], [11, 12, 13]]
zip(*vals)
[(1, 6, 11), (2, 7, 12), (3, 8, 13)]