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+ 瀏覽量

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告