颠倒列表的顺序,然后按字典顺序排序

时间:2016-05-20 18:25:28

标签: python

我需要创建一个代码来对单词列表进行排序,并将它们从反向排列成字典顺序。例如,给定列表["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个字母的单词?

3 个答案:

答案 0 :(得分:6)

指定要排序为反向字符串的键

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

答案 1 :(得分:2)

使用简单的lambda函数 -

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

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

print(arr)

输出 -

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

答案 2 :(得分:0)

感觉你想让别人为你做功课 - 所以这里有一个你必须解开一点才能理解的答案

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 comprehension [f(x)for list in of list_of_xs if expression]
  • 您可以将字符串切换为字符列表(反之亦然)
  • sorted(mylist)返回列表的排序版本
  • 虽然你在这里检查了反向(mylist),即使它没有在这里使用。你可以嵌套这些:反转(排序(mylist)) - 整洁! (但未在我的解决方案中使用)

(哦,我喜欢lambda答案)