【问题标题】:python sort a list by an alphabetpython按字母对列表进行排序
【发布时间】:2017-11-02 22:03:22
【问题描述】:

我正在尝试按字母顺序对列表进行排序 - 但值在前面包含 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']

【问题讨论】:

  • 嗨 Jawad,您需要在问题中包含更多细节,并将其格式设置得更简洁

标签: python python-3.x sorting


【解决方案1】:

您应该可以仅使用 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))

如果我还没有完全理解你在追求什么,请告诉我。

【讨论】:

  • 感谢您抽出宝贵时间回答我的问题,我尝试了您的第一种方法,它返回 ['axx', 'xaa', 'xzz', 'bbb', 'ccc'],而我希望结果是 ['xaa', 'xzz', 'axx', 'bbb', 'ccc'] ,这意味着我想按“x”对它们进行排序,但它应该通常将第二个字符排序为sorted() 函数确实
  • 嘿兄弟,我用另一种简单的方式解决了这个问题,谢谢:)
  • 通常您会投票赞成有助于您找到解决方案的答案 - 如果您自己找到答案,请发布您的答案。
  • 好的,我会发布答案,对不起,这是我第一次在这个论坛上提问
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-02
  • 2014-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多