Python 将多个列表作为值,将一个列表作为键

Python 将多个列表作为值,将一个列表作为键,python,list,dictionary,merge,Python,List,Dictionary,Merge,我有3个列表和一个字符串,如下所示: [{'a':1 , 'b':10 , 'c':'buy'},{'a':2 , 'b':11 , 'c':'buy'},{'a':3 , 'b':14 , 'c':'buy'},...] a=['a','b','c'] b=[1,2,3,4,5] c=[10,11,14,15,16] 字符串='buy' 我需要这样一份字典列表: [{'a':1 , 'b':10 , 'c':'buy'},{'a':2 , 'b':11 , 'c':'buy'},{'a':

我有3个
列表
和一个
字符串
,如下所示:

[{'a':1 , 'b':10 , 'c':'buy'},{'a':2 , 'b':11 , 'c':'buy'},{'a':3 , 'b':14 , 'c':'buy'},...]
a=['a','b','c']
b=[1,2,3,4,5]
c=[10,11,14,15,16]
字符串='buy'
我需要这样一份字典列表:

[{'a':1 , 'b':10 , 'c':'buy'},{'a':2 , 'b':11 , 'c':'buy'},{'a':3 , 'b':14 , 'c':'buy'},...]

您只需压缩
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\u longest
的工具将其压缩,以获取静态字符串:

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()
在压缩元组中包含静态字符串:

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'))]

这应该满足您的需求:

[{a[0]:vb, a[1]:vc, a[2]:string} for vb, vc 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
中获取dict键,
'buy'
来自
string
,您可以使用它执行任务

result = [ dict(zip(a,[*v, 'buy'])) for v in zip(b,c) ]
试试这个:

a = ['a', 'b', 'c']
b = [1, 2, 3, 4, 5]
c = [10, 11, 14, 15, 16]

print([{ a[0]:i, a[1]:j, a[2]:'buy'} for i,j 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'}]

这在某种程度上忽略了第一个列表