在python中将两个列表合并为键值对

在python中将两个列表合并为键值对,python,Python,输入: 输出: l1="model,color,brand,value" l2="2009,red,car,100000" 上述操作是否可行?您可以制作l3字典,其中存储键值对: l3="model:2009,color:red,brand:car,value=100000" 但如果您只需要一个字符串,可以使用join: >>> l3 = dict( zip(l1.split(','), l2.split(',')) ) >>> l3 {'brand':

输入:

输出:

l1="model,color,brand,value"
l2="2009,red,car,100000"

上述操作是否可行?

您可以制作
l3
字典,其中存储键值对:

l3="model:2009,color:red,brand:car,value=100000"
但如果您只需要一个字符串,可以使用
join

>>> l3 = dict( zip(l1.split(','), l2.split(',')) )
>>> l3
{'brand': 'car', 'color': 'red', 'model': '2009', 'value': '100000'}

请注意,
l1
l2
不是
list
s,而是字符串。因此,我们可以通过在逗号上拆分来将它们转换为列表,例如,
l1。拆分(“,”)
这些不是列表,而是字符串。您需要将它们转换为列表和zip文件:

>>> l3 = ','.join([ '%s:%s' % (k, v) for k, v in zip(l1.split(','), l2.split(',')) ])
>>> l3
'model:2009,color:red,brand:car,value:100000'
此外,您可能会发现
collections.namedtuple
非常有用:

>>> l1.split(',') # split string by comma
['model', 'color', 'brand', 'value']
>>> l3 = zip(l1.split(','), l2.split(','))
>>> l3 # zipped list
[('model', '2009'), ('color', 'red'), ('brand', 'car'), ('value', '100000')]
>>> ','.join('%s:%s' % l for l in l3)     # convert back to string
'model:2009,color:red,brand:car,value:100000'

因为您要求提供键值对列表,而接受的答案不是您在帖子/问题中给出的答案,所以这里有一个替代解释(字典列表)

代码:

答复:

keys = 'model,color,brand,value'
values = '2009,red,car,10000'
zcar = [ {key: val} for (key, val) in zip(keys.split(','),values.split(','))]

感谢您的积极批评。

l1
l2
是字符串,但看起来像列表,
l3
是字符串,但看起来像字典。我很好奇为什么您需要字符串。您想要的
l3
看起来很奇怪;
=
是打字错误吗?如果不是,页面上的每个答案(此时)都是错误的。这不是question@Noelkd:是的,DSM不久前注意到了这一点。我们仍在等待OP的回复。
>>> l1 = "model,color,brand,value"
>>> l2 = "2009,red,car,100000"
>>> l3 = ",".join(a+":"+b for a,b in zip(l1.split(","),l2.split(",")))
>>> l3
'model:2009,color:red,brand:car,value:100000'
l3 = ",".join(":".join(pair) for pair in zip(l1.split(","), l2.split(","))
keys = 'model,color,brand,value'
values = '2009,red,car,10000'
zcar = [ {key: val} for (key, val) in zip(keys.split(','),values.split(','))]
[{'model': '2009'}, {'colour': 'red'}, {'brand': 'car'}, {'value': '10000'}]