Вы можете просто сжать b
и c
и использовать их для создания словарей в понимании:
a = ['a', 'b', 'c']
b = [1, 2, 3, 4, 5]
c = [10, 11, 14, 15, 16]
[{'a':a, 'b':b, 'c':'buy'} for a, b, in zip(b,c)]
Результат:
[{'a': 1, 'b': 10, 'c': 'buy'},
{'a': 2, 'b': 11, 'c': 'buy'},
{'a': 3, 'b': 14, 'c': 'buy'},
{'a': 4, 'b': 15, 'c': 'buy'},
{'a': 5, 'b': 16, 'c': 'buy'}]
Если вы хотите включить ключи от a
динамически, вы также можете сжать их с помощью чего-нибудь вроде itertools zip_longest
, чтобы получить строку c: 1011 *
from itertools import zip_longest
a = ['a', 'b', 'c']
b = [1, 2, 3, 4, 5]
c = [10, 11, 14, 15, 16]
[dict(zip_longest(a, tup, fillvalue='buy')) for tup in zip(b,c)]
Тот же результат:
[{'a': 1, 'b': 10, 'c': 'buy'},
{'a': 2, 'b': 11, 'c': 'buy'},
{'a': 3, 'b': 14, 'c': 'buy'},
{'a': 4, 'b': 15, 'c': 'buy'},
{'a': 5, 'b': 16, 'c': 'buy'}]
Еще один способ - использовать itertools.repeat()
для включения строки stati c в сжатый кортеж:
from itertools import repeat
a = ['a', 'b', 'c']
b = [1, 2, 3, 4, 5]
c = [10, 11, 14, 15, 16]
[dict(zip(a, tup)) for tup in zip(b,c, repeat('buy'))]