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