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

dvd*_*mmc 2 python

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

>>> mdict = {'a' : 1, 'b' : 2, '%c' : 4}
>>> max(mdict)
  'b'
Run Code Online (Sandbox Code Playgroud)

没有重新映射键有没有办法解决这个问题?

Mar*_*ers 8

您正在获取最大密钥(按字典顺序).max()仅查看键,而不是值,除非您使用key函数告诉它.%c在之前排序ab,因此最大键是b:

>>> max({'a': 100, 'b': 0, '%c': 50})
'b'
>>> min({'a': 100, 'b': 0, '%c': 50})
'%c'
Run Code Online (Sandbox Code Playgroud)

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

max(mdict, key=mdict.get)
Run Code Online (Sandbox Code Playgroud)

演示:

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