我想按字典顺序打印单词。我以为sorted()
以这种方式排列单词。我也试过.sort()
,它返回相同的顺序。或者我是否遗漏了字典顺序的内容?
代码:
a_list = ['Zrhregegrydb', 'cygzRFWDWBdvF']
for word in sorted(a_list):
print(word)
输出:
# Zrhregegrydb
# cygzRFWDWBdvF
期望的输出:
# cygzRFWDWBdvF
# Zrhregegrydb
答案 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]