在Python 3中返回已排序值的名称

时间:2017-06-21 14:00:50

标签: python python-3.x

我有像

这样的价值观
amity = 0
erudite = 2

我可以用

对整数进行排序
 print (sorted([amity, abnegation, candor, erudite, dauntless]))`

但我希望变量名也可以附加到整数,这样当数字排序时我可以告诉每个数字的含义。 有没有办法做到这一点?

2 个答案:

答案 0 :(得分:4)

在名称和数字之间定义映射

numbers = dict(dauntless=42, amity=0, abnegation=1, candor=4, erudite=2)

然后排序

d = sorted(numbers.items(), key=lambda x: x[1])
print(d)
# [('amity', 0), ('abnegation', 1), ('erudite', 2), ('candor', 4), ('dauntless', 42)]

要将结果保留为映射/字典,请在排序列表中调用collections.OrderedDict

from collections import OrderedDict

print(OrderedDict(d))
# OrderedDict([('amity', 0), ('abnegation', 1), ('erudite', 2), ('candor', 4), ('dauntless', 42)])

答案 1 :(得分:0)

Python有一个名为dictionary的内置数据类型,它用于映射键值对。这几乎是您在问题中要求的,将value附加到特定的key

您可以阅读更多关于词典here的内容。

我认为你应该做的是创建一个字典并将变量的名称映射为每个整数值的字符串,如下所示:

amity = 0
erudite = 2
abnegation = 50
dauntless = 10
lista = [amity, erudite, abnegation, dauntless]
dictonary = {} # initialize dictionary
dictionary[amity] = 'amity'# You're mapping the value 0 to the string amity, not the variable amity in this case.
dictionary[abnegation] = 'abnegation'
dictionary[erudite] = 'erudite'
dictionary[dauntless] = 'dauntless'
print(dictionary) # prints all key, value pairs in the dictionary
print(dictionary[0]) # outputs amity.
for item in sorted(lista):
    print(dictionary[x]) # prints values of dictionary in an ordered manner.