Я работаю на алгоритме поиска в питоне, но есть что-то я не получаю работать ..Объединения списков с одинаковым первым индексом, но другим вторым индексом
У меня есть список, который выглядит как это [[» А», "1.txt"], [ "А", "2.txt"], [ "А", "3.txt"], [ "В", "1.txt"], [ "В" , "3.txt"]]
Теперь я хочу объединить суб-списки, имеющие тот же самый первый индекс. Таким образом, результатом будет:
[["A", ["1.txt", "2.txt", 3.txt "]], [" B ", [" 1.txt "], [ «3.txt»]]]
Любой, кто знает, как это сделать ... Любопытное получил своего рода (на основе сортировки слиянием), но это не слияние кортежей
def merge_pairs(data):
if len(data) <= 1 :
return data[:]
else:
mid = len(data) // 2
fst = merge_pairs(data[:mid])
snd = merge_pairs(data[mid:])
res = []
fi = 0
si = 0
while fi < len(fst) and si < len(snd):
if fst[fi][0] < snd[si][0] or fst[fi][0] == snd[si][0] and fst[fi][1] < snd[si][1]:
res.append(fst[fi])
fi = fi + 1
else:
res.append(snd[si])
si = si + 1
if fi < len(fst) :
res.extend(fst[fi:])
elif si < len(snd) :
res.extend(snd[si:])
return res
Так я как не использовать функцию ДИКТ() питона
Спасибо заранее
Бро, ур герой! –
Есть ли способ получить также подсчитанное значение в этом списке кортежей. Итак: [["A", "2.txt"], ["A", "2.txt"]] будет [('A', ['2.txt, 2')] вместо [('A', ['2.txt')] –
@MartijnLinders - я обновил ответ с этим, поэтому, пожалуйста, отредактируйте свой вопрос, чтобы спросить, что в конце, чтобы мой ответ правильно совпадал с вопросом, а затем принять ответ если кажется приемлемым. –