Python中如何对列表内变量值排序后输出对应变量名?
实现方案
你当前的代码只存储了变量的数值,排序后丢失了数值和变量名的对应关系,所以需要先将变量名和对应的值绑定存储,再排序输出。
最简实现代码
x = 0 y = 9 z = 3 # 存储(值, 变量名)的元组,建立值和名称的对应关系 items = [(x, 'x'), (y, 'y'), (z, 'z')] # 按值倒序排序 items.sort(reverse=True) # 遍历输出变量名 for value, name in items: print(name)
代码说明
- 用元组把变量值和对应的字符串名称绑定,排序时默认优先按元组的第一个元素(也就是变量值)比较,不需要额外指定排序规则
- 排序后遍历直接取元组的第二个元素(变量名)输出,即可得到你需要的
y/z/x输出结果 - 额外提醒:你原代码中
for x in range(...)的循环变量名和你定义的变量x重名,会覆盖原有x的取值,建议修改循环变量名避免冲突
可选简化写法(变量较多时更适用)
如果变量数量多,手动写元组比较麻烦,可以用字典存储对应关系:
x = 0 y = 9 z = 3 var_dict = {'x':x, 'y':y, 'z':z} # 按字典的值倒序排序 sorted_vars = sorted(var_dict.items(), key=lambda item: item[1], reverse=True) for name, value in sorted_vars: print(name)
内容的提问来源于stack exchange,提问作者Line Thunman
相关产品推荐
相关产品推荐

