Python – 按列表排序元组
有时,在使用Python元组时,我们可能会遇到需要使用外部列表对所有元组键进行排序的问题。这个问题可以应用于数据领域,如数据科学。让我们讨论可以执行此任务的某些方式。
Input : test_list = [(‘Gfg’, 10), (‘best’, 3), (‘CS’, 8), (‘Geeks’, 7)], ord_list = [‘Geeks’, ‘best’, ‘CS’, ‘Gfg’]
Output : [(‘Geeks’, 7), (‘best’, 3), (‘CS’, 8), (‘Gfg’, 10)]
Input : test_list = [(‘best’, 3), (‘CS’, 8), (‘Geeks’, 7)], ord_list = [‘Geeks’, ‘best’, ‘CS’]
Output : [(‘Geeks’, 7), (‘best’, 3), (‘CS’, 8)]
方法 #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)]