簡體   English   中英

反轉列表的順序,然后按字典順序排序

[英]Reversing order of a list and then sorting in lexicographical order

我需要編寫一個對單詞列表進行排序的代碼,並將它們按逆序按字典順序排列。 例如,給定列表["harry", "harra", harrb"]我需要一種方法來反轉每個單詞,因此列表變為["yrrah", "arrah","brrah"] 。然后我需要對其進行排序按照字典順序並將其恢復為原始順序,因此看起來像["harra", "harrb", "harry"] 。我從文件'ifile'中獲取單詞,但是對於此代碼,我只是對單詞進行排序帶有一定數量的字母“ n”。

到目前為止,這是我的代碼:

def getRhymeSortedCount(n,ifile,file):
    word_list = []
    for word in ifile:
        if len(word) == n:
            word_list.append(word.strip())
    arr = word_list
    arr.sort(key = lambda x : x[::-1])
    ofile.write("\n".join(word_list))

它正確地按單詞的最后一個字母對單詞進行排序,但是不帶字母數=“ n”的單詞怎么改變我的len語句,使其僅捕獲帶有n個字母的單詞?

指定要排序為反向字符串的鍵

word_list = ["harry","harra", "harrb"]
word_list.sort(key=lambda str: str[::-1])

使用簡單的lambda函數-

arr = ["harry","harra", "harrb"]

arr.sort(key = lambda x : x[::-1])

print(arr)

輸出-

['harra', 'harrb', 'harry']

感覺就像您想要某人為您做作業-所以這是您必須解開一些答案才能理解的答案

word_list = ['harry', 'harra', 'harrb', "ignore_me"]
[y[::-1] for y in sorted([ x[::-1] for x in word_list if len(x) == 5])]

這里要學習的東西:

  • 列表推導[如果表達式,則list_of_xs中x的f(x)]
  • 您可以將字符串切片為字符列表(也可以相反)
  • sorted(mylist)返回列表的排序版本
  • 當您在這里時,請檢查reversed(mylist),即使此處未使用它。 您可以嵌套這些:reversed(sorted(mylist))-整潔! (但未在我的解決方案中使用)

(哦,我喜歡lambda的答案)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM