Я уверен, что там есть более элегантный ответ, и он пришел бы в ответах.
Но для некоторых простых ответов:
L2 = ['A','B','C','D','A','B']
L3 = [3,2,1,2,2,1]
L4 = zip(L2, L3)
L5 = []
L6 = []
def freduce(l):
for x, y in l:
print x , y
if x in L5:
k = L5.index(x)
L6[k] += y
else:
L5.append(x)
L6.append(y)
freduce(L4)
print L5
print L6
Вывод:
['A', 'B', 'C', 'D']
[5, 3, 1, 2]
[Отредактированный ответ для понимания второй реализации]
>>> L3 = [3,2,1,2,2,1]
>>> L2 = ['A','B','C','D','A','B']
>>> range(0, len(L2))
[0, 1, 2, 3, 4, 5]
>>>
Следовательно, для i в диапазоне (0, len (L2)): ... i становится индексом
Использование этого индексаВы можете извлечь информацию из L3 и L2, выполнив:
key = L2[i]
num = L3[i]
Затем вы добавите информацию в dict
l2_sum[key] = l2_sum.get(key, 0) + num
Здесь l2_sum.get (key, 0) возвращает 0, еслиключ отсутствует, иначе текущее значение.
Надеюсь, оно достаточно понятно.