如何不硬编码打印《动物森友会》性格统计中值相同的字典键?
解决方法
你的问题在于用单个变量ww存储最高频性格,导致最后仅保留遍历到的最后一个符合条件的类型。要解决这个问题,需要收集所有频率等于最大值的性格类型,同时避免硬编码数值,改用动态获取的最大值来判断。
修改后的代码
totalfreq2 = {} for p_type in personality: if p_type in totalfreq2: totalfreq2[p_type] += 1 else: totalfreq2[p_type] = 1 print(totalfreq2) maxfreq2 = max(totalfreq2.values()) print(maxfreq2) # 用列表收集所有最高频的性格类型 top_types = [] for p_type in totalfreq2: if totalfreq2[p_type] == maxfreq2: top_types.append(p_type) # 适配单/多个最高频类型的输出逻辑 if len(top_types) == 1: print(f"《动物森友会》村民最常见的性格类型是 {top_types[0]}") else: joined_types = " 和 ".join(top_types) print(f"《动物森友会》村民最常见的性格类型是 {joined_types}")
修改后的输出
{'Jock': 57, 'Cranky': 57, 'Peppy': 53, 'Big Sister': 26, 'Lazy': 63, 'Normal': 63, 'Snooty': 57, 'Smug': 37} 63 《动物森友会》村民最常见的性格类型是 Lazy 和 Normal
关键改动说明
- 用列表
top_types替代单个变量,收集所有符合最高频率的性格类型 - 条件判断使用动态获取的
maxfreq2,替代硬编码的63,适配不同数据集场景 - 添加多类型输出逻辑,让语句更符合自然表达习惯
内容的提问来源于stack exchange,提问作者FJFJFJJJ
相关产品推荐
相关产品推荐

