Python: 如何让列表以小写字符串开头?
Python: How do you make a list start with the lowercase strings?
我目前正在制作一个简单的代码,允许用户输入一个句子或一组单词,程序将按字母顺序对单词进行排序。这段初始代码效果很好,但不幸的是,它先打印出大写单词,然后打印出小写单词。我希望是否有一种简单的方法可以扭转这种情况,让小写单词排在列表的第一位而不是大写单词。任何帮助将不胜感激!
strings = input("Enter words: ")
words = strings.split()
words.sort()
print("The sorted words are:")
for word in words:
print(word)
您可以通过自定义键函数进行排序。
words.sort(key=lambda s: (s[0].isupper(), s))
默认情况下,Python 根据每个字符的序数值 (ord(c))
对字符串进行排序,这对应于其英文字母表的 ASCII 值。在 ASCII 中,大写字母的值低于小写字母,这就是为什么你有这种结果。
要修改此行为,您需要修改 sort
函数中的 key
。
例如,如果您想要不区分大小写的排序,您可以执行以下操作:
words.sort(key=str.lower)
在您的情况下,您需要实施两条规则:
- 不区分大小写的排序(例如'alice' < 'bob' < 'dylan'):可以用
str.lower
完成
- 在字符相同但大小写不同的单词中,将大写版本放在最后(例如 'alice' < 'Alice' < 'ALICE'):可以通过恢复原始 ASCII 排序来完成
str.swapcase
你可以用一个键函数同时实现这两个规则,returns一个元组(rule1, rule2)。关于 here.
的更多信息
words.sort(key=lambda x: (x.lower(), x.swapcase()))
下面是我的测试代码供参考:
words = ["Adam", "ADAM", "Zack", "Chloe", "Bernard", "SIGFRIED", "bErnard"]
words.sort(key=lambda x: (x.lower(), x.swapcase()))
print("The sorted words are:")
for word in words:
print(word)
输出:
The sorted words are:
Adam
ADAM
bErnard
Bernard
Chloe
SIGFRIED
Zack
我目前正在制作一个简单的代码,允许用户输入一个句子或一组单词,程序将按字母顺序对单词进行排序。这段初始代码效果很好,但不幸的是,它先打印出大写单词,然后打印出小写单词。我希望是否有一种简单的方法可以扭转这种情况,让小写单词排在列表的第一位而不是大写单词。任何帮助将不胜感激!
strings = input("Enter words: ")
words = strings.split()
words.sort()
print("The sorted words are:")
for word in words:
print(word)
您可以通过自定义键函数进行排序。
words.sort(key=lambda s: (s[0].isupper(), s))
默认情况下,Python 根据每个字符的序数值 (ord(c))
对字符串进行排序,这对应于其英文字母表的 ASCII 值。在 ASCII 中,大写字母的值低于小写字母,这就是为什么你有这种结果。
要修改此行为,您需要修改 sort
函数中的 key
。
例如,如果您想要不区分大小写的排序,您可以执行以下操作:
words.sort(key=str.lower)
在您的情况下,您需要实施两条规则:
- 不区分大小写的排序(例如'alice' < 'bob' < 'dylan'):可以用
str.lower
完成
- 在字符相同但大小写不同的单词中,将大写版本放在最后(例如 'alice' < 'Alice' < 'ALICE'):可以通过恢复原始 ASCII 排序来完成
str.swapcase
你可以用一个键函数同时实现这两个规则,returns一个元组(rule1, rule2)。关于 here.
的更多信息words.sort(key=lambda x: (x.lower(), x.swapcase()))
下面是我的测试代码供参考:
words = ["Adam", "ADAM", "Zack", "Chloe", "Bernard", "SIGFRIED", "bErnard"]
words.sort(key=lambda x: (x.lower(), x.swapcase()))
print("The sorted words are:")
for word in words:
print(word)
输出:
The sorted words are:
Adam
ADAM
bErnard
Bernard
Chloe
SIGFRIED
Zack