#python #list #dictionary #tuples
Вопрос:
Предположим, у меня есть следующие списки:
l1 = [['a','b','c'],['x','y','z'],['i','j','k']] l2 = [(0,0.1),(0,0.2),(2,0.3),(2,0.4),(1,0.5),(0,0.6)]
Я хочу объединить два списка по ключам l2
и индексу l1
так, чтобы я получил:
[[0.1,['a','b','c'], [0.2,['a','b','c'], [0.3,['i','j','k'], [0.4,['i','j','k'], [0.5,['x','y','z'], [0.6,['a','b','c']]
Интересно, как это делается? поскольку слияние происходит не по обоим ключам.
Ответ №1:
Достаточно простого понимания:
[[v, l1[i]] for i, v in l2] # [[0.1, ['a', 'b', 'c']], # [0.2, ['a', 'b', 'c']], # [0.3, ['i', 'j', 'k']], # [0.4, ['i', 'j', 'k']], # [0.5, ['x', 'y', 'z']], # [0.6, ['a', 'b', 'c']]]
Ответ №2:
Понимание списка с некоторой индексацией сделает это хорошо
l1 = [['a', 'b', 'c'], ['x', 'y', 'z'], ['i', 'j', 'k']] l2 = [(0, 0.1), (0, 0.2), (2, 0.3), (2, 0.4), (1, 0.5), (0, 0.6)] result = [[value, l1[idx]] for idx, value in l2]
Уравнение цикла for
result = [] for idx, value in l2: l1_item = l1[idx] result.append([value, l1_item])
Ответ №3:
l1 = [['a','b','c'],['x','y','z'],['i','j','k']] l2 = [(0,0.1),(0,0.2),(2,0.3),(2,0.4),(1,0.5),(0,0.6)] print([[v,l1[k]] for k,v in l2])