如何将键和值从字典连接到列表?

时间:2019-05-19 15:52:39

标签: python python-2.7 list dictionary concat

我正在尝试将字典中的键和值连接起来,我想根据键将它们放在子列表中;但我没有成功。到目前为止,我所拥有的(在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']]

3 个答案:

答案 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)