考虑我有输入列表包含元素19 14 36如何为每个元素分配一个名称,例如A表示第一个元素,B表示第二个,C表示第三个,输出是排序列表(14,19,36)但是打印控制台上的列表我希望它是(B,A,C)
什么是在python中执行赋值操作的函数?
答案 0 :(得分:1)
from operator import itemgetter
from string import ascii_uppercase
data = [19, 14, 36]
labelled = zip(data, ascii_uppercase) # [(19, 'A'), (14, 'B'), (36, 'C')]
sorted_data = sorted(labelled,
key=itemgetter(0)) # [(14, 'B'), (19, 'A'), (36, 'C')]
labels = [pair[1] for pair in sorted_data] # ['B', 'A', 'C']
答案 1 :(得分:0)
您可以使用zip
:
>>> a = [19, 14, 36]
>>> b = ['A', 'B', 'C']
>>> print [b for (a,b) in sorted(zip(a,b), key=lambda x: x[0])]
['B', 'A', 'C']
您可以试验here
答案 2 :(得分:0)
您可以使用zip
和itemgetter
来解决问题:
import operator
number_arr = [19, 14, 32]
letter_arr = ['A', 'B', 'C']
zipped = zip(number_arr, letter_arr)
sorted_by_number = sorted(zipped, key=operator.itemgetter(0))
print list(map(operator.itemgetter(1), sorted_by_number))
有关详细信息,请参阅zip,map和itemgetter上的python文档