如何使用min()和max()函数输出变量名而非变量值?
如何使用min()和max()函数输出变量名而非变量值?
嘿,我明白你现在的困扰啦——你现在用min()和max()只能拿到列表里的数值,但想要的是对应的变量名对吧?咱们来一步步解决这个问题~
首先你得知道,当你把card_5、card_6这些变量放进列表player_card_list的时候,列表里存储的其实是这些变量的值,而不是变量名本身。所以min()和max()自然只能返回数值,没法直接拿到变量名。
那要解决这个问题,咱们可以用字典来存储变量名和对应的值,这样就能把名字和值绑定在一起啦。比如这样写:
# 用字典存储变量名和对应的值 player_cards = { "card_5": 3, "card_6": 4, "card_7": 5, "card_8": 6 } # 找到值最小的键(也就是变量名) min_player_card_name = min(player_cards, key=player_cards.get) # 找到值最大的键 max_player_card_name = max(player_cards, key=player_cards.get) # 输出看看结果 print("最小的卡片变量名:", min_player_card_name) print("最小的卡片值:", player_cards[min_player_card_name]) print("最大的卡片变量名:", max_player_card_name) print("最大的卡片值:", player_cards[max_player_card_name])
这里的关键点是min()和max()的key参数,我们传入player_cards.get,意思是根据字典里每个键对应的值来比较大小,最后返回的就是对应的键(也就是你想要的变量名)。
如果你还是想保留原来的单个变量,也可以把变量名和值一起放进元组列表里,比如:
card_5 = 3 card_6 = 4 card_7 = 5 card_8 = 6 # 用元组列表存储(变量名,值) player_card_list = [("card_5", card_5), ("card_6", card_6), ("card_7", card_7), ("card_8", card_8)] # 找到值最小的元组,然后取第一个元素(变量名) min_player_card = min(player_card_list, key=lambda x: x[1])[0] max_player_card = max(player_card_list, key=lambda x: x[1])[0] print("最小的卡片变量名:", min_player_card) print("最大的卡片变量名:", max_player_card)
这里我们把每个变量名(字符串形式)和它的值组成元组放进列表,然后用lambda函数指定按元组的第二个元素(也就是值)来比较,最后取元组的第一个元素就是变量名啦。
两种方法都能实现你想要的效果,推荐用字典的方式,因为结构更清晰,操作起来也更方便哦~
备注:内容来源于stack exchange,提问作者Jukezy
相关产品推荐
相关产品推荐

