Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在字典列表中查找最大值_Python_Data Structures - Fatal编程技术网

Python 在字典列表中查找最大值

Python 在字典列表中查找最大值,python,data-structures,Python,Data Structures,给定数据结构: [ {'id':0, 'items': [ {'id': 0, name: "Tom1", age: 10}, {'id': 0, name: "Mark1", age: 15}, {'id': 0, name: "Pam1", age: 17} ] }, {'id':1, 'items': [ {'id': 1, name: "Tom12", a

给定数据结构:

   [
    {'id':0, 'items': 
      [
       {'id': 0,  name: "Tom1", age: 10}, 
       {'id': 0, name: "Mark1", age: 15}, 
       {'id': 0, name: "Pam1", age: 17}
      ]
    },
    {'id':1, 'items': 
      [
       {'id': 1,  name: "Tom12", age: 8}, 
       {'id': 1, name: "Mark12", age: 3}, 
       {'id': 1, name: "Pam12", age: 2}
      ]
    },

    {'id':2, 'items': 
      [
       {'id': 2,  name: "Tom13", age: 55}, 
       {'id': 2, name: "Mark13", age: 66}, 
       {'id': 2, name: "Pam13", age: 77}
      ]
    },
  ]
我想在每本字典中找到年龄最大的一项,然后选择它。我如何做到这一点

def find_largest_age(entry):
  return max(entry['items'], key=lambda d: d['age'])

map(find_largest_age, data_structure)
map
将该功能应用于顶级列表中的每个条目

max
将调用
中为
'items'
列表的每个成员提供的函数,并返回该函数给出最大值的函数

请注意,您可以将其设置为一行:

map(lambda e: max(e['items'], key=lambda d: d['age']), data_structure)
print [max(dVals['items'], key=lambda x: x['age']) for dVals in yourData]

{'id': 0, 'age': 17, 'name': 'Pam1'}
{'id': 1, 'age': 8, 'name': 'Tom12'}
{'id': 2, 'age': 77, 'name': 'Pam13'}
但这更难理解。

试试这个:

for dVals in yourData:
    print max(dVals['items'], key=lambda x:x['age'])
或一个班轮:

map(lambda e: max(e['items'], key=lambda d: d['age']), data_structure)
print [max(dVals['items'], key=lambda x: x['age']) for dVals in yourData]

{'id': 0, 'age': 17, 'name': 'Pam1'}
{'id': 1, 'age': 8, 'name': 'Tom12'}
{'id': 2, 'age': 77, 'name': 'Pam13'}

奇怪地让人想起今天,虽然不是重复的。看起来像JSON数据。你知道你可以直接用json加载它,对吧?真的吗?我该怎么做呢?也许从操作员模块更容易阅读:
printmax(dVals['items'],key=operator.itemgetter('age'))