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** 方法会将所有相似的字符串分组到一个迭代器对象中。对于给定的列表,我们已使用 - 分割字符串,并将字符串的第一部分传递给 **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']]

结论

如果您在本教程中有任何疑问,请在评论区中提出。

更新于: 2020年7月7日

3K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告