例如,我有一个列表输入。我想要返回一个列表,首先按字母排序' x'然后按字母顺序排列。我是Python的新手,目前正在进行谷歌的python课程。
所以输入:['abc', 'bad', 'xzx', 'xxy']
预期回报为:['xxy', 'xzx', 'abc', 'bad']
。
我已经尝试过的事情:
答案 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