【发布时间】:2015-12-06 23:10:32
【问题描述】:
我正在研究 python 中的搜索算法,但有些东西我没有开始工作..
我有一个看起来像这样的列表 [["A","1.txt"],["A","2.txt"],["A","3.txt"],[" B","1.txt"],["B","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
所以我不想使用python的dict()函数
提前致谢
【问题讨论】:
标签: list sorting python-3.x merge