2015-05-19 119 views
0

嗨,我想根据n-grams的降序排序字符串列表。如何使用n-gram在python中对字符串列表进行排序

假设以下是我的名单

["sedan", "sail sedan", "sail", "price of", "price", "of chevrolet", "of", "chevrolet sail", "chevrolet"] 

我想输出

["price of", "of chevrolet", "chevrolet sail", "sail sedan", "sedan", "sail", "price", "of", "chevrolet"] 

注: 没有为按字母顺序没有验证。

+0

Thanx for you reply ...顺序不是问题。只是想按照n-gram的降序排列 – 3ppps

+0

你能说清“n-grams的降序”是什么意思吗?按照什么标准排序,如果不是原文句子或字母的位置?你只是想要,例如,所有的3克,然后是2克,然后是1克? –

+0

是的,我想要所有的3克,然后是2克,然后是1克 – 3ppps

回答

2

假设按“n-gram降序排列”表示您希望拥有,例如,首先是3克,那么2克,等等,你可以试试这个:

>>> ngrams = ["sedan", "sail sedan", "sail", "price of", "price", "of chevrolet", "of", "chevrolet sail", "chevrolet"] 
>>> sorted(ngrams, key=lambda s: len(s.split()), reverse=True) 
['sail sedan', 'price of', 'of chevrolet', 'chevrolet sail', 'sedan', 'sail', 'price', 'of', 'chevrolet'] 

它使用一种特殊的key功能,首先split荷兰国际集团的字符串,然后使用len确定单词的数量在n-gram中。或者,您也可以尝试count ing n-gram中的空格数:

>>> sorted(ngrams, key=lambda s: s.count(" "), reverse=True) 
相关问题