首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按字符串长度对字符串列表进行排序

按字符串长度对字符串列表进行排序
EN

Stack Overflow用户
提问于 2014-03-18 22:35:32
回答 3查看 116关注 0票数 1

我想知道为什么我的字符串列表没有正确排序。我输入了一个4个单词的句子,然后它被排列了24次,然后我希望它对那些句子进行排序。除非我用

代码语言:javascript
复制
def my4sort(alist): #sorts the list of strings
  return(sorted(alist, key=len))

排列0:“bob是编程批次”,排序时给出“bob是编程批次” 排列1:“bob是很多编程”,排序后给出“bob就是很多编程”。 排列2:当排序给出“bob编程就是很多”时,“bob编程就是很多”。 排列3:“bob编程批次是”排序时给出的“bob编程批号是”。 排列4:当排序给出“bob地段就是编程”时,“bob地段就是编程”。 排列5:当排序给出“bob大量编程是”时,“bob地段编程是”。 排列6:“bob规划批次”排序时“是bob编程批号吗?” 排列7:“bob大量编程吗?”排序时给出“是bob大量编程”。 排列8:当排序给出“正在编程bob地段”时,“是在编程bob地段吗?” 排列9:“当排序给出”是编程很多鲍勃‘是编程很多鲍勃’。 排列10:“是很多bob编程”当排序时给出“是很多bob编程”。

这是我得到的输出,你可以看到这是不对的

这是我的置换码

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-18 22:45:59

如果要对字符串列表中的每个字符串进行排序,则需要根据每个字符串而不是字符串列表调用列表上的sorted。例如:

代码语言:javascript
复制
def shortStringsByWordLengths(sentences):
    return [' '.join(sorted(sentence.split(), key=len)) for sentence in sentences]

在这段代码中,我创建了一个新列表,该列表基于拆分、排序,然后重新加入每个单独的句子。split接受该字符串并将其转换为由空格分隔的单词列表(例如,'hello world!'变成['hello', 'world!']sorted按长度对该列表进行排序,并将其与空格重新组合在一起。

根据您的评论,您希望它按照最长的第一个排序,在这种情况下,您需要将reverse=True添加到sorted中,使其看起来如下:

代码语言:javascript
复制
def shortStringsByWordLengths(sentences):
    return [' '.join(sorted(sentence.split(), key=len, reverse=True)) for sentence in sentences]
票数 2
EN

Stack Overflow用户

发布于 2014-03-18 22:43:07

看起来,您要做的是对所有排列字符串的列表进行排序。排序后,它们不是都是相同的长度吗,因为你只是在重新排列单词?如果您希望对每个字符串进行单独排序,则首先需要将其拆分成单独的单词进行比较。

代码语言:javascript
复制
sorted("bob lots programming is".split(), key=len)
['is', 'bob', 'lots', 'programming']
票数 1
EN

Stack Overflow用户

发布于 2014-03-18 22:59:43

罗布瓦茨的解决方案转移到你的职能:

代码语言:javascript
复制
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']
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22492479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档