📜  Python – 混合对字符串列表中的数字排序

📅  最后修改于: 2022-05-13 01:54:25.777000             🧑  作者: Mango

Python – 混合对字符串列表中的数字排序

有时,在处理数据记录时,我们可能会遇到以自定义格式接收数据的问题,我们需要执行排序。我们可以接收人名和空格分隔的分数,并要求获得从最好到最差的排序。让我们讨论一种可以解决这个特定问题的方法。

方法#1:使用split() + sort() + key函数
上述功能的组合可用于执行此任务。在此,我们使用外部函数执行排序,在该函数中我们拆分字符串并提取数字部分。

# Python3 code to demonstrate 
# Numeric Sort in Mixed Pair String List
# using split() + sort() + key function
  
# helper function 
def helper_func(ele):
        name, val = ele.split()
        return int(val)
  
# Initializing list
test_list = ["Manjeet 5", "Akshat 7", "Akash 6", "Nikhil 10"]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Numeric Sort in Mixed Pair String List
# using split() + sort() + key function
test_list.sort(key = helper_func, reverse = True)
      
# printing result 
print ("The reverse sorted numerics are : " + str(test_list))
输出 :
The original list is : ['Manjeet 5', 'Akshat 7', 'Akash 6', 'Nikhil 10']
The reverse sorted numerics are : ['Nikhil 10', 'Akshat 7', 'Akash 6', 'Manjeet 5']

方法 #2:使用split() + lambda + sorted()
上述方法的组合可用于执行此任务。在此,我们如上所述对数字进行拆分。不同的是它是一个班轮并使用 lambda函数来执行。

# Python3 code to demonstrate 
# Numeric Sort in Mixed Pair String List
# using split() + sorted() + lambda
  
# Initializing list
test_list = ["Manjeet 5", "Akshat 7", "Akash 6", "Nikhil 10"]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Numeric Sort in Mixed Pair String List
# using split() + sorted() + lambda
res = sorted(test_list, reverse = True, key = lambda ele: int(ele.split()[1]))
  
# printing result 
print ("The reverse sorted numerics are : " + str(res))
输出 :
The original list is : ['Manjeet 5', 'Akshat 7', 'Akash 6', 'Nikhil 10']
The reverse sorted numerics are : ['Nikhil 10', 'Akshat 7', 'Akash 6', 'Manjeet 5']