【问题标题】:find the max value from a list of dictionaries从字典列表中找到最大值
【发布时间】:2021-05-05 09:46:48
【问题描述】:

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

[{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
我该怎么做?

【问题讨论】:

    标签: python csv


    【解决方案1】:

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

    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)
    

    【讨论】:

      【解决方案2】:

      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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-10-06
        • 1970-01-01
        • 2015-08-05
        • 1970-01-01
        • 2015-07-04
        • 1970-01-01
        • 2023-03-29
        相关资源
        最近更新 更多