我的计划是在python字典中获取每个值,所以我做到了。
data = {}
for _ in range(int(input())):
n = input()
s = float(input())
data.update({n: s})
>>> 2
>>> harry
>>> 2
>>> barry
>>> 3
>>> {'harry': 2.0, 'barry': 3.0}
现在,我想比较此字典中的 VALUES ,并返回max-min的结果。我该怎么办?
预先感谢
答案 0 :(得分:3)
如果只需要这些值:
min_value = min(data.values())
max_value = max(data.values())
如果您想要密钥(稍后获得值很容易):
min_key = min(data, key=data.get) # key=data.__getitem__ will also work
max_key = max(data, key=data.get)
答案 1 :(得分:2)
您可以使用data.values()
获取字典的值。这样可以为您提供一个很好的可迭代性,您可以将其传递给max
或min
:
>>> data = {'harry': 2.0, 'barry': 3.0}
>>> max(data.values())
3.0
或者您可以使用data.items()
获取键值对,然后将结果与key
function传递给max
或min
并在第二部分进行比较配对而不是第一个:
>>> max(data.items(), key=lambda kv: kv[1])
('barry', 3.0)
或者,您可以使用operator.itemgetter
来代替手动编写key
函数:
>>> max(data.items(), key=operator.itemgetter(1))
('barry', 3.0)
或者您可以获取密钥(使用data.keys()
,或仅使用data
本身作为可迭代对象(字典是其密钥的可迭代对象),然后使用dict的data.get
方法作为您的主要功能:
>>> max(data, key=data.get)
'barry'
或者,如果您需要进行许多这些基于值的搜索,则可能需要创建反向字典:
>>> revdata = {value: key for key, value in data.items()}
>>> max(revdata)
3.0
>>> max(revdata.items())
(3.0, 'barry')