【问题标题】:Alphabetically order in python of a string [closed]在字符串的python中按字母顺序排列[关闭]
【发布时间】:2016-10-07 02:53:57
【问题描述】:

我知道有 sort() 函数,但在这里对我不起作用。我想按字母顺序排列如下字符串:

'S  NOM  V  NOUN  VERB'

应该是:

'NOM NOUN S VERB V'

如何在 python 中实现这一点?

编辑:

我试过了:

''.join(sorted(m[i][j]))

但这返回的输出非常变化,例如 ABEILMNNNNOOPRSUVV,这没有意义。

【问题讨论】:

  • 您似乎希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的程序员编写代码,但他们通常只会在发布者已经尝试自己解决问题时提供帮助。展示这项工作的一个好方法是包含您迄今为止编写的代码、示例输入(如果有的话)、预期输出以及您实际获得的输出(控制台输出、回溯等)。您提供的详细信息越多,您可能收到的答案就越多。检查FAQHow to Ask
  • 拆分-排序-加入
  • @idjaw,我已经说过我试过的了
  • @JohnColeman,这怎么可能?
  • 为什么sort 不能在这里为您工作?如果sort 对您不起作用,那么您肯定已经尝试过在没有排序的情况下如何做到这一点?你能展示一下那个的尝试吗?

标签: python alphabetical


【解决方案1】:

您至少已经有了一个好的答案。你不妨把它抽象成一个函数:

def sortWords(s, delim = ' '):
    return delim.join(sorted(s.split(delim)))

例如,

>>> sortWords('S NOM V NOUN VERB')
'NOM NOUN S V VERB'

【讨论】:

    【解决方案2】:

    尝试以下方法:

    x = 'S  NOM  V  NOUN  VERB'
    x = x.split()   # produces ['S', 'NOM', 'V', 'NOUN', 'VERB']
    x = sorted(x)   # produces ['NOM', 'NOUN', 'S', 'V', 'VERB']
    x = ' '.join(x) # produces 'NOM NOUN S V VERB'
    

    如果您想颠倒 V 和 VERB 的顺序,则必须使用自定义排序函数(请参阅 sorted 函数的“key”关键字)。

    【讨论】:

    • 我认为使用 sorted 是关键!
    【解决方案3】:

    您应该将字符串拆分为列表,然后对其进行排序并将其转回字符串。这是一个例子。

    old_string = "hello world abc"
    string_list = old_string.split(" ") # split the string by a space, you can choose something different.
    new_string = " ".join(string_list.sort()) # join list by a space.
    print(new_string)
    

    【讨论】:

    • 它不起作用,因为sort()“就地”工作。它会更改原始列表并且不会返回新列表。
    • 使用 sorted,而不是 sort()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多