python 中的最大迭代项和关键属性
max iteritems and key attribute in python
考虑以下字典 gh,为什么我得到带有和不带有键属性的不同输出。关键属性在这里做什么?
gh = {'LF': 11483, 'C': 10886, 'DH': 7558, 'SS': 11259, 'OF': 26418, 'CF': 7552, 'P': 42586, 'RF': 10307, '1B': 13087, '2B': 12348, '3B': 13507}
max(gh.iteritems(), key = lambda x: x[1])
output: ('P', 42586)
没有密钥:
max(gh.iteritems(), key = lambda x: x[1])
output : ('SS', 11259)
当您将键指定为 lambda x: x[1]
时,您的代码会根据字典值的最大值来选择项目。这当然是 42586。
但是,没有key,最大值是从dict的key中选择的。 "maximum" 是键 'SS',因为它在字典序上比任何其他键都大。
编辑:正如 DSM 在评论中指出的那样,没有指定 key
,比较实际上使用了整个 (key, value)
对 iteritems()。但是,每个键的唯一性本质上使它成为键的比较,因为打破平局永远不需要 value
。
考虑以下字典 gh,为什么我得到带有和不带有键属性的不同输出。关键属性在这里做什么?
gh = {'LF': 11483, 'C': 10886, 'DH': 7558, 'SS': 11259, 'OF': 26418, 'CF': 7552, 'P': 42586, 'RF': 10307, '1B': 13087, '2B': 12348, '3B': 13507}
max(gh.iteritems(), key = lambda x: x[1])
output: ('P', 42586)
没有密钥:
max(gh.iteritems(), key = lambda x: x[1])
output : ('SS', 11259)
当您将键指定为 lambda x: x[1]
时,您的代码会根据字典值的最大值来选择项目。这当然是 42586。
但是,没有key,最大值是从dict的key中选择的。 "maximum" 是键 'SS',因为它在字典序上比任何其他键都大。
编辑:正如 DSM 在评论中指出的那样,没有指定 key
,比较实际上使用了整个 (key, value)
对 iteritems()。但是,每个键的唯一性本质上使它成为键的比较,因为打破平局永远不需要 value
。