根据第一个空格后的字符对字符串列表进行排序

时间:2019-08-07 18:12:46

标签: python python-3.x list sorting

我有一个字符串列表。我想根据第一个空格之后的字符对列表进行排序(字母数字排序)。如果第一个空格后的字符相同,则按第一个空格前的字符进行排序

L2 = ["ea first qpx", "India Kashmir Equator Khidderpore", "India Kashmir Alipore" , "az0 first qpx", "India Ambati Chembur Mahavir"]

3 个答案:

答案 0 :(得分:0)

使用sort()中的Lambda表达式对内部列表进行排序

L2.sort(key = lambda x : (x.split(" ")[1].lower(), x.split(" ")[0].lower()))

这将内部列表按空格分隔,并根据空格后的第一个字符集对其进行排序。如果第一个字符相同,则将考虑出现在第零个索引处的字符。

lower()用于使排序不区分大小写。如果不使用,则大写字符的字符串将优先于小写字符。

示例:

>> L2 = ["x c t", "a a g", "c a g"]

>> L2.sort(key = lambda x : (x.split(" ")[1].lower(), x.split(" ")[0].lower()))

>> L2

['a a g', 'c a g', 'x c t']

L2 = ["ea first qpx", "India Kashmir Equator Khidderpore", "India Kashmir Alipore" , "az0 first qpx", "India Ambati Chembur Mahavir"]

>> L2.sort(key = lambda x : (x.split(" ")[1].lower(), x.split(" ")[0].lower()))

>> L2

['India Ambati Chembur Mahavir', 'az0 first qpx', 'az0 first qpx', 'India Kashmir Equator Khidderpore', 'India Kashmir Alipore']```

答案 1 :(得分:0)

这有效并返回 排序新列表 ['Ambati Chembur Mahavir', 'Kashmir Alipore', 'Kashmir Equator Khidderpore', 'first qpx', 'first qpx']

代码如下:

L2 = ["ea first qpx", "India Kashmir Equator Khidderpore", "India Kashmir Alipore" , "az0 first qpx", "India Ambati Chembur Mahavir"] 


def sortListAfterSpaceClean(myList):
    newList = []
    for i, val in enumerate(myList):
        # create a list of the characters
        z = list(val)
        for j, jVal in enumerate(z):
            if jVal == " ":
                # we want the rest of the string
                lenOfString = len(val) - j - 1
                restOfString = val[-lenOfString:]
                newList.append(restOfString)
                break



    print('the old list:')    
    print(myList)
    print('the new list:')
    print(newList)
    print('sorted new list')
    newList.sort()
    print(newList)

    return newList



sortListAfterSpaceClean(L2)

随时进行相应的编辑和评论。

答案 2 :(得分:0)

这也有效:

def sortListAfterSpaceSplit(myList): newList = [] for val in myList: # split the string
s = val.split(' ', 1) newList.append(s[1]) newList.sort() return newList