我在 Python 中有一个这样的列表:
[('a', 'b'), ('a', 'c'),('d','f')]
我想要加入具有相同第一项和结果的项目,如下所示:
[('a', 'b', 'c'),('d','f')]
最佳答案
这是一种方法。为了提高效率,我们构建了 dict
以第一个值作为键。我们按值出现的顺序保留值(如果您使用 Python >= 3.7,则也按元组的原始顺序保留 - 否则您将不得不使用 collections.OrderedDict
)
def join_by_first(sequences):
out = {}
for seq in sequences:
try:
out[seq[0]].extend(seq[1:])
except KeyError:
out[seq[0]] = list(seq)
return [tuple(values) for values in out.values()]
join_by_first([('a', 'b'), ('a', 'c'),('d','f')])
# [('a', 'b', 'c'), ('d', 'f')]
关于python - 在列表中查找具有相同第一项的元组并返回另一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55436362/