Я работаю над определением максимального значения (третьего значения в кортеже), разделяемого между первыми двумя значениями, представленными в кортеже.
Я создал defaultdict, который использует отсортированные сцепленные значения первых двух значений кортежа в качестве клавиши di c и назначаю значение di c в качестве третьего значения кортежа.
Как я могу навязать условие, чтобы, когда я сталкиваюсь с той же парой, я заменял значение di c на большее значение? Я только хочу прочитать мой список один раз, чтобы быть эффективным.
users = [
('2','1',0.7),
('1','2', 0.5),
('3','2', 0.99),
('1','3', 0.78),
('2','1', 0.5),
('2','3', 0.99),
('3','1', 0.78),
('3','2', 0.96)]
#The above list is much longer ~10mill+, thus the need to only read through it once.
#Current code
from collections import defaultdict
user_pairings = defaultdict()
for us1, us2, maxval in users:
user_pairings[''.join(sorted(us1+us2))] = maxval ##-> How to impose the condition here?
print(user_pairings)
РЕДАКТИРОВАТЬ Только что осознал серьезный недостаток в моем подходе. Если значения, используемые для ключей, не являются одинарными di git, то мой вывод не будет правильным результатом из-за использования sorted
.