当键的'%'符号作为第一个字符时,Python max()函数不正确

时间:2013-06-06 22:10:41

标签: python

我正在尝试解析一组数据,其中一些键的百分号是第一个字符。如果百分号是键中的第一个字符,为什么max()函数会返回错误答案?

>>> mdict = {'a' : 1, 'b' : 2, '%c' : 4}
>>> max(mdict)
  'b'

如果不重新映射密钥,有没有解决方法呢?

1 个答案:

答案 0 :(得分:8)

您获得了最大(按字面顺序排列)。 max()仅查看键,值,除非您使用key函数告诉它。 %cab之前排序,因此最大键为b

>>> max({'a': 100, 'b': 0, '%c': 50})
'b'
>>> min({'a': 100, 'b': 0, '%c': 50})
'%c'

如果您预期最大值,请使用:

max(mdict, key=mdict.get)

演示:

>>> mdict = {'a' : 1, 'b' : 2, '%c' : 4}
>>> max(mdict, key=mdict.get)
'%c'