【问题标题】:Python Alphabetical order by sort method shows wrong order [duplicate]排序方法的Python字母顺序显示错误的顺序[重复]
【发布时间】:2020-08-13 02:16:51
【问题描述】:

我刚刚学习 python,遇到了一个按字母顺序排序单词的代码。

我的代码是:

my_str="Welcome to Python"
words = my_str.split()
words.sort()
print("The sorted words are:")
for word in words:
    print(word)

我的结果是:

排序后的单词是:

Python

Welcome

to

我的意思是它是按字母顺序排序的,那么结果应该是

Python

to

Welcome

我很困惑,无法在学习过程中继续前进,你的见解会很有帮助。

【问题讨论】:

  • ASCII 中大写字母排在小写字母之前
  • 不区分大小写排序,可以使用str.casefold。类似some_list.sort(key=str.casefold)

标签: python python-3.x


【解决方案1】:

你可以试试:

my_str="Welcome to Python"
some_list = my_str.split()
some_list.sort(key=str.casefold)

print("The sorted words are:")
for word in some_list:
    print(word)

输出将是:

Python
to
Welcome

【讨论】:

    【解决方案2】:

    大写字母比小写字母小

    >>> 'A' < 'a'
    True
    

    如果您想在不区分大小写的情况下进行排序,请使用此选项。

    >>> words.sort(key=str.lower)
    >>> words
    ['Python', 'to', 'Welcome']
    

    如果你使用的是 python3,你可以使用 str.casefold 用于比较,这也将处理 unicode 比较。

    >>> words.sort(key=str.casefold)
    >>> words
    ['Python', 'to', 'Welcome']
    

    【讨论】:

    • 您可以只使用str.lower 而不是lambda,或str.casefold,它专门用于无大小写比较,并且可以正确处理Unicode。
    • 非常感谢,这让我头脑清醒。
    猜你喜欢
    • 2019-12-16
    • 1970-01-01
    • 2014-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多