Вы можете напрямую получить словарь, содержащий нужное вам значение, из max () или min () следующим образом:
def height_key_func (item):
h = item.get("height", 0) # If "height" is not in the dict, 0 will be used
# max() must get an object that is comparable with int and/or float:
if isinstance(h, (int, float)):
return h
return 0
person = max(list_a, key=height_key_func)
print (person["hair_color"])
Чтобы получить словарь в соответствии с выбранным значением, вы можете:
def find_by_value (k, v):
for x in list_a:
if x[k]==v:
return x
person = find_by_value("height", 180)
if person is None:
print("Not found")
Если вы хотите найти всех возможных людей с одинаковым ростом, то:
def find_by_value (k, v):
persons = []
for x in list_a:
if x[k]==v:
persons.append(x)
return persons
Вы можете искать по любому значению, равному запросу, а не только по высоте:
def find_by_any_value (v):
persons = []
for x in list_a:
if v in x.values():
persons.append(x)
return persons
Наконец, вы можете сократить это, например:
def find_by_value (k, v):
return [x for x in list_a if x[k]==v]
persons = find_by_value("height", 180)