簡體   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