📜  Python – 后置字符分类

📅  最后修改于: 2022-05-13 01:54:22.934000             🧑  作者: Mango

Python – 后置字符分类

有时,我们有一个用例,我们需要按各种因素(如最后一个字母或任何其他因素)对字符串进行分组。这些类型的问题是数据库查询的典型问题,因此可能在编程时发生在 Web 开发中。本文重点介绍一种按字符串的最后一个字母进行的分组。让我们讨论可以执行此操作的某些方式。

方法 #1:使用next() + lambda + loop
以上3个函数的组合用于以朴素的方法解决这个特定问题。 lambda函数执行查找后置字符的任务,而 next函数有助于前向迭代。

# Python3 code to demonstrate 
# Rear character String categorization
# using next() + lambda + loop 
  
# initializing list 
test_list = ['an', 'apple', 'geek', 'for', 'greek', 'free'] 
  
# printing original list 
print("The original list : " + str(test_list)) 
  
# using next() + lambda + loop 
# Rear character String categorization
util_func = lambda x, y: x[len(x) - 1] == y[len(y) - 1] 
res = [] 
for sub in test_list: 
    ele = next((x for x in res if util_func(sub, x[len(x) - 1])), []) 
    if ele == []: 
        res.append(ele) 
    ele.append(sub) 
  
# print result 
print("The list after Categorization : " + str(res)) 
输出 :
The original list : ['an', 'apple', 'geek', 'for', 'greek', 'free']
The list after Categorization : [['an'], ['apple', 'free'], ['geek', 'greek'], ['for']]

方法 #2:使用sorted() + groupby()
这个特定的任务也可以使用 groupby函数来解决,它提供了一种传统的方法来解决这个问题。 sorted函数按后面的字符对元素进行排序,以提供给 groupby 以进行相关分组。

# Python3 code to demonstrate 
# Rear character String categorization
# using sorted() + groupby() 
from itertools import groupby 
  
# initializing list 
test_list = ['an', 'apple', 'geek', 'for', 'greek', 'free'] 
  
# printing original list 
print("The original list : " + str(test_list)) 
  
# using sorted() + groupby() 
# Rear character String categorization
util_func = lambda x: x[len(x) - 1] 
temp = sorted(test_list, key = util_func) 
res = [list(ele) for i, ele in groupby(temp, util_func)] 
  
# print result 
print("The list after Categorization : " + str(res)) 
输出 :
The original list : ['an', 'apple', 'geek', 'for', 'greek', 'free']
The list after Categorization : [['an'], ['apple', 'free'], ['geek', 'greek'], ['for']]