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