在元组列表中保留元组

时间:2016-09-22 09:57:07

标签: python list tuples

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

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

有没有办法可以根据每个元组的第一个索引将它们连接在一起,使每个元组包含5个元素。我知道事实上,元组中每个字母中的2个字母不多,即整个列表中的2个以上的字母或者b&b。' b。另一个要求是使用Python2.6。我无法弄清楚它的逻辑。任何帮助是极大的赞赏。

期望的输出:

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

我尝试创建一个新的第一个元素列表并添加其他元素但是我只有一个列表而不是元组列表。

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

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

使用每个元组中的第一个元素填充templist:

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[1] j[2]对应的每个j[0]

1 个答案:

答案 0 :(得分:2)

假设列表中的每个字母只有一个或两个:

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)]