我有一本看起来像这样的字典
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)
相同。
字典是动态创建的。
答案 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)