我正在尝试解析一组数据,其中一些键的百分号是第一个字符。如果百分号是键中的第一个字符,为什么max()函数会返回错误答案?
>>> mdict = {'a' : 1, 'b' : 2, '%c' : 4}
>>> max(mdict)
'b'
如果不重新映射密钥,有没有解决方法呢?
答案 0 :(得分:8)
您获得了最大键(按字面顺序排列)。 max()
仅查看键,不值,除非您使用key
函数告诉它。 %c
在a
或b
之前排序,因此最大键为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'