从字典列表中找到最大值

时间:2021-05-05 09:46:48

标签: python csv

我有一个字典列表,例如:

[{1: 0.4, 3: 0.5}, {1: 0.2, 3: 0.9}, {1: 0.3, 3: 0.1}]

我想从每个列表项中找到第一个键(1)和第二个键(3)的最大值
-> key(1) 的最大值为 0.4
-> key(3) 的最大值为 0.9
我该怎么做?

2 个答案:

答案 0 :(得分:0)

您应该将所需的值提取到可迭代对象中,然后寻找最大值。

data = [{1: 0.4, 3: 0.5}, {1: 0.2, 3: 0.9}, {1: 0.3, 3: 0.1}]

key = 1
max([d[key] for d in data])

请注意,在上面的示例中,我创建了一个列表,其列表理解为 [d[key] for d in data]。通常,在处理大输入时,创建列表会占用大量内存,应该避免。使用生成每个元素的生成器可以获得类似的结果:

max(d[key] for d in data)

答案 1 :(得分:0)

Python max() 函数可以接受 key 参数,该参数指定用于排序的单参数函数。返回的是列表中的一个元素,在本例中是字典。

dicts = [{1: 0.4, 3: 0.5}, {1: 0.2, 3: 0.9}, {1: 0.3, 3: 0.1}]

keys = [1, 3]

for key in keys:
    max_d = max(dicts, key=lambda d: d[key])
    print(f'maximum of key({key}) is {max_d[key]}')
maximum of key(1) is 0.4
maximum of key(3) is 0.9