Python将列表中的类似子字符串分组

在本教程中,我们将编写一个程序,该程序将列表中的相似子字符串分组。让我们看一个例子来更清楚地理解它。

输入值

strings = ['tutorials-python', 'tutorials-c', 'tutorials-java', 'tutorials-javascript', 'python-1', 'python-2',
'javascript-1']

输出结果

[['tutorials-python', 'tutorials-c', 'tutorials-java', 'tutorials-javascript'], ['python-1', 'python-2'],
['javascript-1']]

我们将使用itertools模块中的groupby方法来解决该问题。该GROUPBY方法组中的所有类似的字符串转换为ITER对象。对于给定的列表,我们用-分割了字符串,并将字符串的第一部分传递给groupby方法。

让我们看看解决这个问题所涉及的步骤。

  • 初始化字符串列表。

  • 导入itertools模块。

  • 初始化一个空列表。

  • 现在,将字符串和一个lambda函数传递给itertools.groupby方法。

  • lambda函数在使用-拆分后应返回字符串的第一部分

  • GROUPBY方法将返回元素及其集团的元组的列表。

  • 在每次迭代中,将一组相似的元素转换为一个列表。

  • 将列表追加到空列表。

  • 打印结果。

示例

# importing the itertools module
import itertools
# initializing the strings
strings = ['tutorials-python', 'tutorials-c', 'tutorials-java', 'tutorials-javascript', 'python-1', 'python-2', 'javascript-1']
# empty list
result = []
# iterator
# lambda function will return first part from the string
iterator = itertools.groupby(strings, lambda string: string.split('-')[0])
# iterating over the result
# element and its group
for element, group in iterator:
   # appending the group by converting it into a list
   result.append(list(group))
# printing the result
print(result)

输出结果

如果运行上面的代码,则将得到以下结果。

[['tutorials-python', 'tutorials-c', 'tutorials-java', 'tutorials-javascript'],
ython-1', 'python-2'], ['javascript-1']]

结论

如果您对本教程有任何疑问,请在评论部分中提及。