-6

输入:

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

输出:

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

上面的事情可能吗?

4

5 回答 5

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'

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

于 2013-11-05T17:43:49.080 回答
4

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

>>> 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'
于 2013-11-05T17:43:50.893 回答
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'
于 2013-11-05T17:44:08.877 回答
2
l3 = ",".join(":".join(pair) for pair in zip(l1.split(","), l2.split(","))
于 2013-11-05T17:44:49.960 回答
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'}]

任何积极的批评都感激不尽。

于 2013-11-05T20:02:07.210 回答