使用字母' x'的关键参数排序列表

时间:2017-02-12 18:13:04

标签: python python-2.7 list sorting

例如,我有一个列表输入。我想要返回一个列表,首先按字母排序' x'然后按字母顺序排列。我是Python的新手,目前正在进行谷歌的python课程。

所以输入:['abc', 'bad', 'xzx', 'xxy']

预期回报为:['xxy', 'xzx', 'abc', 'bad']

我已经尝试过的事情:

  • 创建一个新功能,寻找每个' x'列表中的字母,但未通过此字母;
  • 在排序失败中使用关键功能:(

2 个答案:

答案 0 :(得分:4)

一个关键的功能技巧:

>>> l = ['abc', 'bad', 'xzx', 'xxy']
>>> k = lambda c: -1 if c == 'x' else ord(c)
>>> sorted(l, key=lambda s: [k(c) for c in s])
['xxy', 'xzx', 'abc', 'bad']

函数k在应用于-1时返回'x',并且与任何其他字符(ord)的unicode点一起返回。由于这些unicode点(整数)反映了chars'字典顺序且保证大于或等于0,这可确保'x'具有最低值。

按键排序函数然后comprehends将每个字符串放入字符串中每个字符k(c)的{​​{1}}列表中。

答案 1 :(得分:1)

您可以使用121932631112635269进行排序,将每个key替换为"较小的字符"比任何字母字符:(如x

'0'

如果您只想让以前以>>> lst = ['abc', 'bad', 'xzx', 'xxy'] >>> sorted(lst, key=lambda x: x.replace('x', '0')) ['xxy', 'xzx', 'abc', 'bad'] 开头的字符串:

x