python - 在列表中查找具有相同第一项的元组并返回另一个列表

标签 python list tuples

我在 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/

相关文章:

python - lxml 解析原子 - 空结果?

python - 尝试将二维列表重新排列为不同的二维列表

android - 简单的待办事项列表示例在 Android 上不起作用

arrays - 对多个索引的元组数组进行排序,在 Julia 中只有一个反转

python - Python 3.7中使用工厂函数生成注释类型时出现 “typing.ClassVar”问题

python - 无法使用 getattr() 函数解析 bs4 src 属性

python - 在ansible中运行python函数

python - 如何在 vscode + python jupyter 扩展中获得 tqdm progress_apply 栏?

c# - 通过检查元素的条件将列表拆分为子列表

python - 为什么我不能在 python 中使用列表作为 dict 键?