我正在尝试将字典中的键和值连接起来,我想根据键将它们放在子列表中;但我没有成功。到目前为止,我所拥有的(在Python 2.7上工作):
我设法将键和值连接在一起,但没有将它们拆分到不同的子列表中。
dict = {'v1':[1, 2, 3], 'v2': [1, 2, 3, 4]}
concat = []
for key in dict.keys():
vals = dict [key]
for v in vals:
concat.append(str(key + '_' + str(v)))
我得到:
['v1_1', 'v1_2', 'v1_3', 'v2_1', 'v2_2', 'v2_3', 'v2_4']
但是我想要:
[['v1_1', 'v1_2', 'v1_3'], ['v2_1', 'v2_2', 'v2_3', 'v2_4']]
答案 0 :(得分:1)
dict = {'v1':[1, 2, 3], 'v2': [1, 2, 3, 4]}
res=[]
for key in dict.keys():
vals = dict [key]
res.append([ key+'_'+str(v) for v in vals])
答案 1 :(得分:0)
您可以使用此列表理解功能。 Python 3.6及更高版本。
>>> [[ f'{k}_{x}' for x in dict[k] ] for k in dict]
[['v1_1', 'v1_2', 'v1_3'], ['v2_1', 'v2_2', 'v2_3', 'v2_4']]
或者对于Python <3.6。
>>> [[ '%s_%d' % (k,x) for x in d[k] ] for k in d]
[['v1_1', 'v1_2', 'v1_3'], ['v2_1', 'v2_2', 'v2_3', 'v2_4']]
答案 2 :(得分:0)
您将在for
循环的两个级别上追加到同一列表。更改为
for key in dict.keys():
sublist = []
vals = dict [key]
for v in vals:
sublist.append(str(key + '_' + str(v)))
concat.append(sublist)