【问题标题】:How to sort the string items in a custom order in Python如何在 Python 中按自定义顺序对字符串项进行排序
【发布时间】:2021-07-29 12:48:56
【问题描述】:

我想对特定数据结构中的一些项目进行排序,但我会尝试概括我遇到的问题

我的输入是一个包含字符串项目的列表,我希望这里有三个项目,但不一定总是三个。 但即使我想对其进行排序

我的输入包含 a=['BHR','BHT','BHZ'] 要么 a=['BHN','BHE','BHZ'] 也许我们可以期待任何东西而不是BH*,但我们只关注最后一个字母。 要么是'Z,R,T' 对,要么是'Z,N,E' 对,如果是其他任何组合,则应停止该进程。

输出的顺序应该是。 a=['Z','R','T'] 要么 a=['Z','N','R'] 即使列表中没有三个项目,输出也应该按顺序排列

def sorter(a):
    n=len(a)
    for i in np.arange(0,n):
        if (a[i].find('Z') == 1):
            a0=a[i]
            continue
        elif (a[i].find('R') == 1):
            a1=a[i]
            continue
        elif (a[i].find('T') == 1):
            a2=a[i]
            continue
    
    a[0]=a0
    a[1]=a1
    a[2]=a2

谁能帮我完成这段代码?或者建议我一个简单有效的替代方法?

注意:我想将项目保存在单个变量 a0,a1,a2 中,然后再将它们组合起来。

【问题讨论】:

    标签: python string list sorting


    【解决方案1】:

    所以你总共有一个 Z、N、R、T 的排序。

    a=['BHR','BHT','BHZ']
    a.sort(key=lambda t: "ZNRT".find(t[-1]))
    

    【讨论】:

    • 非常感谢您的解决方案。但就我而言,我想将这些项目保存在单个变量a0,a1,a2 中,然后将它们组合起来
    【解决方案2】:

    使用sorted,按Z, R, T排序。

    a = ['BHR', 'BHT', 'BHZ', "21a"]
    a = sorted(a, key=lambda t: "TRZ".find(t[-1]), reverse=True)
    

    【讨论】:

      猜你喜欢
      • 2014-02-08
      • 2012-06-02
      • 1970-01-01
      • 2010-11-09
      • 1970-01-01
      • 1970-01-01
      • 2013-09-04
      • 1970-01-01
      相关资源
      最近更新 更多