我正在尝试返回一个排序单词列表,其中字母按字母顺序排序。例如:
>>> sorted_words(["bet", "abacus", "act", "celebration", "door"])
['act', 'bet', 'door']
我的函数应该返回一个新的排序值列表,但它必须保留第一个字母的unicode低于或等于以下字母的任何单词。例如,“门”被附加到新列表,因为d'< ='o'和'o'< ='o'和'o'< ='r'。这是我到目前为止所写的,但我没有运气。
def sorted_words[wordlist]:
result = []
for word in wordlist:
if word[0] <= word[1:]:
result.append(word)
print(word)
我知道这不对,我只是不知道如何将每个单词的第一个字母与其余字母进行比较。任何帮助将不胜感激。我还必须使用sorted()方法,但我不确定如何使用它。
答案 0 :(得分:2)
您应该将代码分为两部分:第一部分选择单词(根据标准),第二部分对所选单词进行排序。
标准的描述与示例之间存在差异。如果标准是&#34;第一个字母的unicode低于或等于下面的字母&#34;,那么单词&#34; abacus&#34;应该包括在内。但是,您提供的解释&#34; door&#34;似乎是&#34;字符的unicode值应该是(不是严格地)升序&#34;
(&#34;严格上升意味着<
,而非严格意味着<=
介于元素及其后面的一个。)
对于第一个标准,请使用以下代码
WORDS = ["bet", "abacus", "act", "celebration", "door"]
list_of_words = []
for word in WORDS:
if all(word[0] <= c for c in word[1:]):
list_of_words.append(word)
list_of_words.sort()
print (list_of_words)
对于第二个标准,请使用
list2_of_words = []
for word in WORDS:
if all(c1 <= c2 for c1,c2 in zip(word[0:-1],word[1:])):
list2_of_words.append(word)
list2_of_words.sort()
print (list2_of_words)
答案 1 :(得分:0)
你需要另一个循环,所以:
def sorted_words(wordlist):
result = []
for word in wordlist:
keepWord = True
for letter in word[1:]:
if word[0] >= letter:
keepWord = False
break
if keepWord:
result.append(word)
return result
print(sorted_words(["bet", "abacus", "act", "celebration", "door"]))
['bet', 'act', 'door']