获取字典中的最大键

时间:2010-06-24 07:45:40

标签: python

我有一本看起来像这样的字典

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)相同。

字典是动态创建的。

7 个答案:

答案 0 :(得分:42)

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

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

max(MyCount, key=int)

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

答案 1 :(得分:17)

您需要比较实际数值。目前,您正在以字面方式比较字符串。

max(MyCount, key=int)

答案 2 :(得分:1)

max(map(int, MyCount))

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

max(MyCount, key=int)

答案 3 :(得分:1)

由于您的键是字符串,因此按字典顺序进行比较,“9”确实是最大值。

您要找的是:max(int(k) for k in MyCount)

答案 4 :(得分:1)

这是你的问题:

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

有效地,你在这里比较字符'1'和'9'。你想要的可能就是:

max(long(k) for k in MyCount)

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

答案 5 :(得分:1)

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

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

或者蒂姆建议:

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

答案 6 :(得分:0)

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

max(MyCount, key=MyCount.get)