[英]Find maximum value in a list of dictionaries
給定一個數據結構:
[
{'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}
]
},
]
我想在每個字典中找到年齡具有最大值的項目並選擇它。 我如何實現這一目標?
嘗試這個:
for dVals in yourData:
print max(dVals['items'], key=lambda x:x['age'])
或者單行:
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'}
def find_largest_age(entry):
return max(entry['items'], key=lambda d: d['age'])
map(find_largest_age, data_structure)
map
會將功能應用於頂層列表中的每個條目。
max
將調用'items'
列表中每個成員的key
提供的函數,並返回該函數給出最大值的函數。
請注意,您可以將其設為單行:
map(lambda e: max(e['items'], key=lambda d: d['age']), data_structure)
但這更難以理解。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.