我想知道为什么我的字符串列表没有正确排序。我键入一个4字的句子,然后它被置换了24次,然后我希望它对这些句子进行排序。除非我使用
def my4sort(alist): #sorts the list of strings
return(sorted(alist, key=len))
排列0:'鲍勃正在编程很多'当排序时给出' bob是编程批次'
排列1:'鲍勃是很多编程'当排序时给出'鲍勃是很多编程'
排列2:' bob编程很多'当排序时给出' bob编程很多'
排列3:' bob编程地段是'当排序时给出' bob编程地段是'
排列4:' bob lot是编程'当排序时给出' bob lot是编程'
排列5:' bob lot编程是'当排序时给出' bob lot编程是'
排列6:'鲍勃编程很多'当排序时给出'是bob编程批次'
排列7:'是bob lot编程'当排序时给出'是bob lot编程'
排列8:'编程bob lot'当排序时给出'编程bob lot'
排列9:'编程很多bob'当排序时给出'编程很多bob'
排列10:'很多bob编程'当排序时给出'很多bob编程'
这是我得到的输出,你可以看到它是对的
这是我的排列代码
def permutations(liststring): #permutes the list of strings
if not liststring:
return ['']
ret = []
for i, d in enumerate(liststring):
perms = permutations(liststring[:i] + liststring[i+1:])
for perm in perms:
ret.append(d + ' ' + perm)
return ret
答案 0 :(得分:2)
如果您尝试在字符串列表中对每个字符串的单词进行排序,则需要根据每个字符串而不是字符串列表在列表上调用sorted
。例如:
def shortStringsByWordLengths(sentences):
return [' '.join(sorted(sentence.split(), key=len)) for sentence in sentences]
在此代码中,我基于拆分,排序,然后重新加入每个单独的句子来创建新列表。 split
获取字符串并将其转换为由空格分隔的单词列表(即'hello world!'
变为['hello', 'world!']
,sorted
按长度对该列表进行排序,并将其重新组合在一起有空格。
根据您的评论,您希望它按最长排序排序,在这种情况下,您需要将reverse=True
添加到sorted
,使其如下所示:
def shortStringsByWordLengths(sentences):
return [' '.join(sorted(sentence.split(), key=len, reverse=True)) for sentence in sentences]
答案 1 :(得分:1)
您尝试做的似乎是对整列的置换字符串进行排序。在排序之后,它们的长度是否相同,因为您只需重新排列单词?如果您想单独对每个字符串进行排序,首先需要将其拆分为单个单词以进行比较。
sorted("bob lots programming is".split(), key=len)
['is', 'bob', 'lots', 'programming']
答案 2 :(得分:1)
Rob Watts的解决方案已转移到您的职能部门:
def my4sort(alist): #sorts the list of strings
return [" ".join(sorted(permutation.split(),key=len,reverse=True)) for permutation in alist]
alist=["this is sparta","sparta this is","is this sparta"]
print mysort4sort(alist)
# gives ['sparta this is', 'sparta this is', 'sparta this is']