【问题标题】:Get max key in dictionary获取字典中的最大键
【发布时间】:2025-11-21 15:50:01
【问题描述】:

我有一本像这样的字典

MyCount= {u'10': 1, u'1': 2, u'3': 2, u'2': 2, u'5': 2, u'4': 2, u'7': 2, u'6': 2, u'9': 2, u'8': 2}

我需要最高的密钥,即 10,但如果尝试max(MyCount.keys()),它给出的最高密钥为 9。
max(MyCount) 也一样。

字典是动态创建的。

【问题讨论】:

    标签: python


    【解决方案1】:

    这是因为u'9' > u'10',因为它们是字符串

    要进行数字比较,请使用int 作为键。

    max(MyCount, key=int)
    

    (通常不需要调用.keys()

    【讨论】:

    • 调用dict.keys 通常是多余的。
    【解决方案2】:

    您需要比较实际的数值。目前您正在按字典顺序比较字符串。

    max(MyCount, key=int)
    

    【讨论】:

      【解决方案3】:

      由于您的键是字符串,因此它们会按字典顺序进行比较,并且 '9' 确实是最大值。

      您要查找的内容类似于:max(int(k) for k in MyCount)

      【讨论】:

        【解决方案4】:

        这是你的问题:

        >>> u'10' > u'9'
        False
        

        实际上,您在这里比较了字符“1”和“9”。你想要的大概是这样的:

        max(long(k) for k in MyCount)
        

        或使用数字作为键(而不是字符串)创建字典。

        【讨论】:

          【解决方案5】:

          您将 max 用于字符串值。您必须将它们转换为 int。尝试类似:

          print(max([int(s) for s in MyCount.keys()]))
          

          或者按照蒂姆的建议:

          print(max(int(s) for s in MyCount))
          

          【讨论】:

          • 您既不需要方括号也不需要.keys() 方法。
          【解决方案6】:
          max(map(int, MyCount))
          

          或者如果您希望返回值是原始字符串:

          max(MyCount, key=int)
          

          【讨论】:

          • 调用dict.keys 在这里(和大多数地方)是不必要的并且可能效率低下。
          【解决方案7】:

          如果有人最终在这里寻找如何按值排序而不是键:

          max(MyCount, key=MyCount.get)
          

          【讨论】: