按字符串中的最后n个字母对字符串列表进行排序

时间:2018-08-10 19:00:28

标签: python-3.x algorithm list

我正在尝试解决一个问题,其中我必须按字符串的长度以及字符串中的最后一个字符对字符串列表进行排序。在具有相同长度和最后一个字符的字符串的cas中,应按倒数第二个字符进行排序,依此类推。

我有这段代码,但是我不清楚为什么它不按我的预期工作。有人可以指出我正确的方向。

我的代码:

import sys

word_lists = [line.split(' ') for line in ' '.join([x.strip() for x in sys.stdin.readlines()]).split('  ')]
for i in range(0, len(word_lists)):
    word_lists[i] = sorted((word_lists[i]), key=lambda x: (x[:-1], len(x)))

输入:

apple
banana
grape
kiwi
pear

airplane
bicycle
boat
car

输出:

[['apple', 'banana', 'grape', 'kiwi', 'pear'], ['airplane', 'bicycle', 'boat', 'car']]

预期输出:

[['banana', 'apple', 'grape', 'kiwi', 'pear'], ['bicycle', 'airplane', 'car', 'boat']]

2 个答案:

答案 0 :(得分:1)

使用open task manager-->services-->right click on the services MySQL server and MySQL router-->restart them.

例如:

x[::-1]

输出:

l = [['apple', 'banana', 'grape', 'kiwi', 'pear'], ['airplane', 'bicycle', 'boat', 'car']]
for i in l:
    print(sorted(i, key=lambda x: (x[::-1], len(x))))

['banana', 'apple', 'grape', 'kiwi', 'pear']
['bicycle', 'airplane', 'car', 'boat']

答案 1 :(得分:0)

如果要先对数据进行字符串排序,则必须更改代码中的键顺序,并且还希望字符串按字母顺序从尾部开始排序,因此必须从尾部发送字符(x [::-1] ),因此最后您必须通过以下方式更改密钥 键(len(x),x [::-1])