按字典顺序排序字符串列表

时间:2018-05-20 16:31:48

标签: python list sorting lexicographic

我想按字典顺序打印单词。我以为sorted()以这种方式排列单词。我也试过.sort(),它返回相同的顺序。或者我是否遗漏了字典顺序的内容?

代码:

a_list = ['Zrhregegrydb', 'cygzRFWDWBdvF']
for word in sorted(a_list):
    print(word)

输出:

# Zrhregegrydb
# cygzRFWDWBdvF

期望的输出:

# cygzRFWDWBdvF
# Zrhregegrydb

5 个答案:

答案 0 :(得分:4)

这是因为大写字母的ASCII值小于小写字母。如果您希望排序忽略大小写,则可以执行此操作,例如:

for word in sorted(a_list, key=str.lower):

答案 1 :(得分:3)

你错过了什么。在标准的Unicode顺序中(从旧的ASCII顺序开始),所有大写英文字母都在所有小写字母之前。您可以在a table of Unicode characters

中看到

如果你想在排序时忽略这种情况,就像看起来那样,只是在排序过程中暂时将所有字母转换为大写或小写。 Python允许您使用sorted参数在key函数中执行此操作,您可以在此处的其他答案中看到(在完成此答案之前完成)。

答案 2 :(得分:2)

默认情况下,python已经按字典顺序对字符串进行排序,但大写字母都是在小写字母之前排序的。如果要对字符串进行排序并忽略大小写,则可以执行

b_list = sorted(a_list, key=str.lower)

答案 3 :(得分:1)

排序时可以忽略这种情况:

sorted_list = sorted(a_list, key = lambda s : s.lower())

答案 4 :(得分:-3)

您必须使用索引进行迭代才能看到正确的顺序。

以下是您可以执行此操作的代码。

a_list = ['Zrhregegrydb', 'cygzRFWDWBdvF']
a_list.sort(reverse=True)
for i in range(0, len(a_list)):
    print a_list[i]