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

时间:2013-11-05 17:41:15

标签: python

输入:

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

输出:

l3="model:2009,color:red,brand:car,value=100000"

以上是可能的吗?

5 个答案:

答案 0 :(得分:6)

您可以使l3字典存储键值对:

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

但如果您只需要一个字符串,则可以使用join

>>> l3 = ','.join([ '%s:%s' % (k, v) for k, v in zip(l1.split(','), l2.split(',')) ])
>>> l3
'model:2009,color:red,brand:car,value:100000'

请注意,l1l2不是list,而是字符串。因此,我们可以通过分割逗号将它们转换为列表,例如l1.split(',')

答案 1 :(得分:4)

这些不是列表,而是字符串。您需要将它们转换为列表和zip:

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

此外,您可能会发现collections.namedtuple有用:

>>> from collections import namedtuple
>>> NT = namedtuple('data', tuple(l1.split(',')))
>>> row = NT(*l2.split(','))
>>> row
data(model='2009', color='red', brand='car', value='100000')
>>> row.model
'2009'

答案 2 :(得分:3)

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

答案 3 :(得分:2)

l3 = ",".join(":".join(pair) for pair in zip(l1.split(","), l2.split(","))

答案 4 :(得分:1)

由于您要求提供键值对列表,并且接受的答案不是您在帖子/问题中显示的答案,因此这里是另一种解释(词典列表)。

代码:

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'}]
感谢任何积极的批评。