我有一个字典列表,例如:
[{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
我该怎么做?
答案 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