繁体   English   中英

在元组列表中合并元组

[英]Concatanate tuples in list of tuples

我有一个元组列表,看起来像这样:

tuples = [('a', 10, 11), ('b', 13, 14), ('a', 1, 2)]

有没有一种方法可以根据每个元组的第一个索引将它们连接在一起,以使每个元组包含5个元素。 我知道一个事实,元组中每个字母的个数不超过2个,也就是说,整个列表中的字母“ a”或“ b”不超过2个。 另一个要求是使用Python2.6。 我无法弄清楚它的逻辑。 任何帮助是极大的赞赏。

所需输出:

tuples = [('a', 10, 11, 1, 2), ('b', 13, 14, 0, 0)]

我试图创建一个新的第一个元素列表,并将其他元素添加到其中,但是然后我只有一个列表,而没有元组列表。

编辑以提供以前尝试过的代码,

创建了一个新列表: templist, resultList = [], []

在每个元组中的第一个元素中填充临时列表:

for i in tuples:
    templist.append(i[0])

elemlist = list(set(templist))

for i in elemlist:
    for j in tuples:
        if i == j[0]:
            resultlist.append((i, j[1], j[2]))

这只是返回相同的元组列表,我如何保留它并追加与正确的j[0]相对应的每个j[1] j[2] j[0]

假设清单中每个字母只有一个或两个,如下所示:

import itertools

tuples = [('a', 10, 11), ('b', 13, 14), ('a', 1, 2)]

result = []
key = lambda t: t[0]
for letter,items in itertools.groupby(sorted(tuples,key=key),key):
    items = list(items)
    if len(items) == 1:
        result.append(items[0]+(0,0))
    else:
        result.append(items[0]+items[1][1:])
print(result)

输出:

[('a', 10, 11, 1, 2), ('b', 13, 14, 0, 0)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM