入力:
l1="model,color,brand,value"
l2="2009,red,car,100000"
出力:
l3="model:2009,color:red,brand:car,value=100000"
上記のことは可能ですか?
入力:
l1="model,color,brand,value"
l2="2009,red,car,100000"
出力:
l3="model:2009,color:red,brand:car,value=100000"
上記のことは可能ですか?
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'
l1
andl2
はlist
s ではなく文字列であることに注意してください。したがって、コンマで分割することにより、それらをリストに変換できますl1.split(',')
。
これらはリストではなく、文字列です。それらをリストと 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'
>>> 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'}]
肯定的な批判はありがたく受け取った。