По моему опыту, лучше называть имена переменных несуществующими 1 .Они просто предоставляют средство для программиста , чтобы получить доступ к значению , на которое ссылается имя переменной.
Я настоятельно рекомендую Сообщение в блоге Неда Батчелдерса "Факты и мифы об именах и значениях Python" , в котором содержится много полезных советов о том, как думать об именах и значениях - хотя большинствоэто только косвенно относится к вопросу.
Похоже, что вы действительно хотите, чтобы сопоставление имени (строки) со значением (целое число).Поэтому я бы использовал словарь со строками в качестве ключей и целые числа в качестве значений:
d = {'a': 1, 'b': 3, 'c': 2}
Тогда, если вы хотите получить список имен, отсортированных по значениям, вы можете использовать:
>>> [key for (key, value) in sorted(d.items(), key=lambda key_value: key_value[1])]
['a', 'c', 'b']
>>> sorted(d.items(), key=lambda key_value: key_value[1])
[('a', 1), ('c', 2), ('b', 3)]
1 Имена переменных существуют (в виде строк) в globals
или locals
- но они могут содержать больше имен, чем вы (явно) использовали:
>>> a = 1
>>> globals()
{'__name__': '__main__', '__doc__': None, ... 'a': 1}
>>> globals()['a']
1
>>> a = 2
>>> globals()['a']
2
Но за исключением узкоспециализированных случаев, доступ к globals
и locals
- это действительно плохой запах кода. Избегайте использования globals
и locals
, когда это возможно!