根据Python中包含的文本对列表中的字符串进行配对

2024-06-23 19:22:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望获得一个字符串列表,并创建一个元组列表,根据它们是否包含相同的文本对项目进行分组

例如,假设我有以下列表:

MyList=['Apple1','Pear1','Apple3','Pear2']

我想根据字符串的最后一个字符以外的所有字符对它们进行配对,以便得到:

ListIWant=[('Apple1','Apple3'),('Pear1','Pear2')]    

我们可以假设只有字符串的最后一个字符用于标识。这意味着我希望通过以下唯一值对字符串进行分组:

>>> list(set([x[:-1] for x in MyList]))
['Pear', 'Apple']

Tags: 项目字符串文本列表字符标识list元组
2条回答

考虑以下代码:

   def alphagroup(lst):
      results = {}
      for i in lst:
         letter = i[0].lower()
         if not letter in results.keys():
            results[letter] = [i,]
         else:
            results[letter].append(i)
      output = []
      for k in results.keys():
         res = results[k]
         output.append(res)
      return output

   arr = ["Apple1", "Pear", "Apple2", "Pack"];

   print alphagroup(arr);

这将实现你的目标。如果每个元素都必须是一个元组,请使用tuple()builtin将每个元素转换为一个元组。希望这有帮助;我测试了代码

In [69]: from itertools import groupby

In [70]: MyList=['Apple1','Pear1','Apple3','Pear2']

In [71]: [tuple(v) for k, v in groupby(sorted(MyList, key=lambda x: x[:-1]), lambda x: x[:-1])]
Out[71]: [('Apple1', 'Apple3'), ('Pear1', 'Pear2')]

相关问题 更多 >

    热门问题