Как сохранить имя переменной при сортировке списка? - PullRequest
0 голосов
/ 02 марта 2019

например:

a = 1
b = 3
c = 2

Я бы хотел отсортировать их численно и получить список переменных в том же порядке, например, результат будет примерно таким: [a,c,b]

Редактировать: я хотел бы сохранить имена переменных, наложенные на значения переменных, то есть я хотел бы, чтобы список сортировался по значениям переменных, но который содержал бы только имена переменных, например, чтобы они выводили [a,c,b] в соответствии с сортировкойих стоимость.

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

По моему опыту, лучше называть имена переменных несуществующими 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, когда это возможно!

0 голосов
/ 02 марта 2019
a = 1
b = 3
c = 2
numbers = [a, b, 4, c] 
# Sorting list of Integers in ascending
numbers.sort() 
print(numbers) 

>>>[1,2,3,4]

https://www.geeksforgeeks.org/python-list-sort/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...