📜  在Python中对混合列表进行排序

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

在Python中对混合列表进行排序

有时,在使用Python时,我们可能会遇到需要对具有混合数据类型的特定列表进行排序的问题。它包含整数和字符串,我们需要对它们中的每一个进行相应的排序。让我们讨论一些可以解决这个问题的方法。

方法 #1:使用sort() + 比较器

这个问题可以使用Python提供的排序功能来解决。我们可以构建自己的自定义比较器来完成混合排序的任务。

# Python3 code to demonstrate working of
# Sort Mixed List
# using sort() + comparator
  
# comparator function for sort
def mixs(num):
    try:
        ele = int(num)
        return (0, ele, '')
    except ValueError:
        return (1, num, '')
  
  
# initialize list 
test_list = [4, 'gfg', 2, 'best', 'is', 3]
  
# printing original list 
print("The original list : " + str(test_list))
  
# Sort Mixed List
# using sort() + comparator
test_list.sort(key = mixs)
  
# printing result
print("List after mixed sorting : " + str(test_list))
输出 :
The original list : [4, 'gfg', 2, 'best', 'is', 3]
List after mixed sorting : [2, 3, 4, 'best', 'gfg', 'is']

方法 #2:使用sorted() + key + lambda + isdigit()

上述功能的组合也可以用来解决这个问题。在此,我们只是使用 sorted() 对列表进行排序,使用键功能使用 lambda函数来使用 isdigit() 分隔数字。

# Python3 code to demonstrate working of
# Sort Mixed List
# using sorted() + key + lambda + isdigit()
  
# initialize list 
test_list = ['4', 'gfg', '2', 'best', 'is', '3']
  
# printing original list 
print("The original list : " + str(test_list))
  
# Sort Mixed List
# using sorted() + key + lambda + isdigit()
res = sorted(test_list, key = lambda ele: (0, int(ele))
                        if ele.isdigit() else (1, ele))
  
# printing result
print("List after mixed sorting : " + str(res))
输出 :
The original list : ['4', 'gfg', '2', 'best', 'is', '3']
List after mixed sorting : ['2', '3', '4', 'best', 'gfg', 'is']