排序列表时如何保留变量名?

时间:2019-03-02 15:47:34

标签: python sorting

例如:

[a,c,b]

我想对这些数字进行排序,并以相同的顺序获取变量列表,例如输出将类似于[a,c,b]

编辑:我想保留变量名叠加在变量值上,即我想要一个按变量值排序但仅包含变量名的列表,例如因此它们会根据其值的排序输出func switchColor(data: UInt32) { guard let contents = backgroundGeometry.firstMaterial?.diffuse.contents else { fatalError("First material is nil") // If this really can be empty, just replace this with return } switch data { case 1..<200: contents = UIColor(red: 242/255, green: 90/255, blue: 90/255, alpha: 1) case 200..<400: contents = UIColor(red: 252/255, green: 162/255, blue: 115/255, alpha: 1) case 400..<600: contents = UIColor(red: 244/255, green: 235/255, blue: 99/255, alpha: 1) case 600..<800: contents = UIColor(red: 110/255, green: 195/255, blue: 175/255, alpha: 1) case 800..<1000: contents = UIColor(red: 91/255, green: 118/255, blue: 211/255, alpha: 1) default: contents = .green } }

2 个答案:

答案 0 :(得分:1)

根据我的经验,最好将变量名视为不存在的 1 。它们只是为程序员提供了一种手段来访问变量名所指的当前值。

我强烈推荐Ned Batchelders blog post on "Facts and myths about Python names and values",其中包含许多有关如何思考名称和值的有用建议-即使其中大部分仅与问题相关。

似乎您真正想要的是名称(字符串)到值(整数)的映射。因此,我将使用以字符串为键,以整数为值的字典:

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 变量名确实存在(作为字符串)在globalslocals中-但它们包含的名称可能比您(显式)使用的名称多:

>>> a = 1
>>> globals()
{'__name__': '__main__', '__doc__': None, ... 'a': 1}
>>> globals()['a']
1
>>> a = 2
>>> globals()['a']
2

但是,除了在高度专业化的情况下,访问globalslocals确实是一种不好的代码味道。 尽可能避免使用globalslocals

答案 1 :(得分:-1)

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/