我正在尝试按字母顺序对列表进行排序 - 但前面的值包含x
。
def front_x(words):
r = words
s = []
o = []
for x in r:
if "x" in x:
s.append(x)
else:
o.append(x)
return sorted(s,key = lambda f:f.find("x")) + sorted(o)
front_x(['bbb', 'ccc', 'axx', 'xzz', 'xaa'])
目前返回['xzz', 'xaa', 'axx', 'bbb', 'ccc']
,
我希望它返回['xaa', 'xzz', 'axx', 'bbb', 'ccc']
答案 0 :(得分:0)
您应该只使用sorted
功能。
尝试这样的事情;
s = ['bbb', 'ccc', 'axx', 'xzz', 'xaa']
sorted(s, lambda w: ("x" in w, w))
这将对包含" x"的值进行排序。在前面,然后从那时开始。
如果您只想对以" x"开头的值进行排序在前面(我不确定你的问题),然后你需要稍微调整一下;
sorted(s, lambda w: ("x" == w[:1], w))
如果我还没有完全明白你所追求的是什么,请告诉我。