You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python字典取最高频率字符时,如何优先选字母序最小的键?

问题解决

你需要修改max函数的key参数,让它在频率相同时优先选择字母序更小的字符。具体来说,把key设置为一个包含两个元素的元组:第一个元素是字符频率(保证频率高的优先),第二个元素是字符ASCII码的负值(让字母序更小的字符拥有更大的key值,从而被max选中)。

修改后的代码如下:

final_dict = {}
for idx, counts in letter_positions.items():
    # 先按频率降序排序,频率相同时按字母序升序(通过负ASCII码实现)
    most_popular = max(counts.items(), key=lambda v: (v[1], -ord(v[0])))
    final_dict[idx] = most_popular[0]

原理说明

  • 当比较两个字符元组时,max会先对比元组的第一个元素(频率),频率更高的元组会被优先选中;
  • 若频率相同,则对比元组的第二个元素(负的ASCII码):字母序越小的字符,其ASCII码值越小,对应的负值就越大,因此会被max选中。比如'r'的ASCII码是114,负值为-114;'y'的ASCII码是121,负值为-121,-114 > -121,所以('r', 2)会被max优先选中。

另外注意:你原代码中most_popular[0][0]是错误的,因为counts.items()返回的是形如('y', 2)的元组,直接取most_popular[0]就能得到目标字符。

内容的提问来源于stack exchange,提问作者terrier99uk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 11:15:34