Python如何自动替换字典值为函数输出并按值降序排序
实现方案
你现有代码的核心问题是遍历字典时仅取出了值做计算打印,没有将计算结果回写到字典对应的键位,且缺少排序步骤,按以下步骤修改即可:
- 遍历字典时使用
items()方法同时获取键和值,不要单独遍历values(),否则计算完成后无法定位要更新的条目 - 完成所有值的替换后,使用
sorted()函数按计算得到的整数值做降序排序,再转换为有序字典(Python 3.7及以上版本原生字典会保留插入顺序,低版本需使用collections.OrderedDict)
完整实现代码如下:
# 1. 创建原字典副本,避免修改原始猜测记录 bingo_entries_190_copy = bingoGuesses190.bingo_entries_190.copy() # 2. 遍历键值对,将原始Y/N字符串替换为函数计算得到的整数 for player_name, guess_record in bingo_entries_190_copy.items(): bingo_entries_190_copy[player_name] = bingo_calculator(guess_record) # 3. 按得分降序排序,生成最终有序字典 bingo_entries_190_sorted = dict( sorted( bingo_entries_190_copy.items(), key=lambda entry: entry[1], # 按字典的值(也就是计算得分)排序 reverse=True # 设为True即为降序 ) )
补充说明:如果字典中存在和你样例里
Rin条目一样带非Y/N字符(比如B)的记录,需要提前在bingo_calculator()函数里做异常处理,避免计算报错。
运行后得到的bingo_entries_190_sorted就是你期望的、值替换为整数且按得分从高到低排列的字典。
内容的提问来源于stack exchange,提问作者jimbeezly
相关产品推荐
相关产品推荐

