2

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

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

有没有办法在不重新映射键的情况下解决这个问题?

4

1 回答 1

8

您将获得最大(按字典顺序)。max()只看键,不看值,除非你用key函数告诉它。在or%c之前排序,所以最大键是:abb

>>> 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'
于 2013-06-06T22:12:08.830 回答