如何对含元组列表列的DataFrame按推荐游戏排名排序,解决代码报错问题
问题原因
你原来的代码是直接对字典的整体键值对排序,sorted的key取x[1]对应的是整个元组列表,Python无法直接对列表类型做排序比较,因此运行报错,而且你实际需要的是对每个客户对应的元组列表内部的元素做降序排序,而非对字典的键做排序。
调整后代码
import pandas as pd # 示例数据,可替换为你实际的recommend_dict recommend_dict = {1100: [('a', 4), ('b', 6)], 1200: [('c', 2), ('d', 9), ('e', 5)]} processed_data = [] for user_id, game_rank_list in recommend_dict.items(): # 对每个用户的游戏元组列表,按元组第二个数值降序排序 sorted_list = sorted(game_rank_list, key=lambda x: x[1], reverse=True) # 转换成你需要的 "6,b 4,a" 格式字符串 format_str = " ".join([f"{score},{name}" for name, score in sorted_list]) processed_data.append({ "用户ID": user_id, "排序后元组列表": sorted_list, "格式化输出结果": format_str }) # 生成DataFrame recommend_games_df = pd.DataFrame(processed_data)
输出说明
以示例的用户1100为例,最终格式化输出结果字段对应值就是你需要的6,b 4,a,如果不需要额外字段,你可以按需调整processed_data里存储的内容。
内容的提问来源于stack exchange,提问作者lifo
相关产品推荐
相关产品推荐

