根据相邻的元组值连接python列表元组元素

我有一个类似的列表:


x = [(0, 'Add:'), (1, 'Net'), (2, 'Profit'), (4, 'Less:'), (5, 'Dep')]

我想将相邻的第一个元组元素的第二个元组元素值连接起来,例如具有第一个元素0、1、2的元组应连接到新字符串“ Add:Net Profit”中,并将具有第一个元素4、5的元组连接成新字符串“少:Dep”。我试过了 :


for i in range(len(x) -1):

    if x[i+1][0] - x[i][0] == 1:

         temp_str = x[i][1] + " " + x[i+1][1]

它给出的输出为:


Add: Net

Net Profit

Less: Dep

怎么了?


炎炎设计
浏览 143回答 3
3回答

慕尼黑8549860

这不是有史以来最优雅的 Python 代码,但它是一个很好的起点。x = {0: 'Add:', 1: 'Net', 2: 'Profit', 4: 'Less:', 5: 'Dep'}keys = sorted(x)strings = []temp=x[keys[0]]for i, j in zip(keys, keys[1:]):  if j-i==1:    temp += ' ' + x[j]  else:    strings.append(temp)    temp=x[j]strings.append(temp)print(strings)  # ['Add: Net Profit', 'Less: Dep']

HUH函数

您应该将问题划分为子问题。您想要组合单词组,因此您需要列表中的单词并join在它们上使用。您可以使用groupby- 函数获得组,为此您需要一个通用标准,例如列表中的位置和元组中的数字之间的差异。from itertools import groupbyx = [(0, 'Add:'), (1, 'Net'), (2, 'Profit'), (4, 'Less:'), (5, 'Dep')]for _, group in groupby(enumerate(x), lambda a:a[1][0] - a[0]):    words = [text for _, (_,text) in group] # extract words from data structure    print(' '.join(words))

守候你守候我

您想首先获取字典的键并对其进行排序,然后开始迭代键直到找到间隙,然后您可以连接所有值:sorted_keys = sorted(x.keys())start_index = 0last_key = sorted_keys[0]results = []for i, cur_key in enumerate(sorted_keys):    if cur_key - last_key > 1:        # a gap has ended.        results.append(' '.join(x[k] for k in range(start_index, i)))        start_index = i    last_key = cur_keyif start_index != i:    results.append(' '.join(x[k] for k in range(start_index, i)))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python