📜  Python – 按列表排序元组

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

Python – 按列表排序元组

有时,在使用Python元组时,我们可能会遇到需要使用外部列表对所有元组键进行排序的问题。这个问题可以应用于数据领域,如数据科学。让我们讨论可以执行此任务的某些方式。

方法 #1:使用dict() + 列表理解
上述功能的组合可以用来解决这个问题。在此,我们通过将元组列表转换为字典来执行此任务,并作为第二步使用列表推导来遍历列表并将字典键映射到值。

# Python3 code to demonstrate working of 
# Order Tuples by List
# Using dict() + list comprehension
  
# initializing list
test_list = [('Gfg', 3), ('best', 9), ('CS', 10), ('Geeks', 2)]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing order list 
ord_list = ['Geeks', 'best', 'CS', 'Gfg']
  
# Order Tuples by List
# Using dict() + list comprehension
temp = dict(test_list)
res = [(key, temp[key]) for key in ord_list]
  
# printing result 
print("The ordered tuple list : " + str(res)) 
输出 :
The original list is : [('Gfg', 3), ('best', 9), ('CS', 10), ('Geeks', 2)]
The ordered tuple list : [('Geeks', 2), ('best', 9), ('CS', 10), ('Gfg', 3)]

方法 #2:使用setdefault() + sorted() + lambda
上述功能的组合可以用来解决这个问题。在此,我们执行将元素映射到索引并使用 setdefault 创建查找的任务。并且,作为第二步,使用 sorted 使用查找字典值列表来排序列表。

# Python3 code to demonstrate working of 
# Order Tuples by List
# Using setdefault() + sorted() + lambda
  
# initializing list
test_list = [('Gfg', 3), ('best', 9), ('CS', 10), ('Geeks', 2)]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing order list 
ord_list = ['Geeks', 'best', 'CS', 'Gfg']
  
# Order Tuples by List
# Using setdefault() + sorted() + lambda
temp = dict()
for key, ele in enumerate(ord_list):
    temp.setdefault(ele, []).append(key)       
res = sorted(test_list, key = lambda ele: temp[ele[0]].pop())  
  
# printing result 
print("The ordered tuple list : " + str(res)) 
输出 :
The original list is : [('Gfg', 3), ('best', 9), ('CS', 10), ('Geeks', 2)]
The ordered tuple list : [('Geeks', 2), ('best', 9), ('CS', 10), ('Gfg', 3)]