在python中为未知大小列表的元素指定名称

时间:2014-04-18 11:08:41

标签: python arrays list console

考虑我有输入列表包含元素19 14 36如何为每个元素分配一个名称,例如A表示第一个元素,B表示第二个,C表示第三个,输出是排序列表(14,19,36)但是打印控制台上的列表我希望它是(B,A,C)

什么是在python中执行赋值操作的函数?

3 个答案:

答案 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)

您可以使用zipitemgetter来解决问题:

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))

有关详细信息,请参阅zipmapitemgetter上的python文档