[英]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.