如何在python字典中的键值对之间比较值?

时间:2018-07-29 05:09:56

标签: python dictionary

我的计划是在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的结果。我该怎么办?

预先感谢

2 个答案:

答案 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()获取字典的值。这样可以为您提供一个很好的可迭代性,您可以将其传递给maxmin

>>> data = {'harry': 2.0, 'barry': 3.0}
>>> max(data.values())
3.0

或者您可以使用data.items()获取键值对,然后将结果与key function传递给maxmin并在第二部分进行比较配对而不是第一个:

>>> 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')