Как объединить ключ и значение из словаря в список? - PullRequest
0 голосов
/ 19 мая 2019

Я пытаюсь объединить ключ и значение из словаря, и я хотел бы поместить их в подсписок в соответствии с ключом;но у меня ничего не получится.Пока что у меня есть (работает на 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 ]

1 голос
/ 19 мая 2019
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])
0 голосов
/ 19 мая 2019

Вы добавляете в один и тот же список на обоих уровнях цикла for. Измените его на

for key in dict.keys():
    sublist = []
    vals = dict [key]
    for v in vals:
        sublist.append(str(key + '_' + str(v)))
    concat.append(sublist)
0 голосов
/ 19 мая 2019

Вы можете использовать это понимание списка. 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. </p>

>>> [[ '%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']]
...