我有一个字符串列表。我想根据第一个空格之后的字符对列表进行排序(字母数字排序)。如果第一个空格后的字符相同,则按第一个空格前的字符进行排序
L2 = ["ea first qpx", "India Kashmir Equator Khidderpore", "India Kashmir Alipore" , "az0 first qpx", "India Ambati Chembur Mahavir"]
答案 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