Python 将多个列表作为值,将一个列表作为键
我有3个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':
列表
和一个字符串
,如下所示:
[{'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
中的键,也可以使用类似于itertoolszip\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'}]
这在某种程度上忽略了第一个列表