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

时间:2015-10-27 20:20:39

标签: python list

我正在寻找一个字符串列表并创建一个元组列表,这些元组根据项目是否包含相同的文本对项目进行分组。

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

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

我想基于除了字符串的最后一个字符之外的所有字符对它们进行配对,以便我得到:

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

我们可以假设只使用字符串的最后一个字符来识别。含义我希望通过以下唯一值对字符串进行分组:

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

考虑以下代码:

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

这将实现您的目标。如果每个元素必须是元组,请使用内置的元组()以将每个元素转换为元组。希望这可以帮助;我测试了代码。