Я работаю над функцией, где мне нужно найти ключи (имена художников) в словаре, которые имеют наибольшее значение. Иногда два ключа имеют одинаковое количество значений, и в этом случае мне нужно вернуть список имен артистов.Найти ключ (ы) с наибольшим значением в словаре
Пример Словарь:
{'M':[("One",1400,30.0, 20.5,"oil paint","Austria"),("Three",1430,100.0,102.0,"watercolor","France")],
'P':[("Eight",1460, 225.0, 200.0, "fresco","Netherlands")],
'U':[("Nine",1203,182.0, 957.0,"egg tempera","Italy"), ("Twelve",1200,76.2,101.6,"egg tempera","France")]
}
Для этого словаря, поскольку М и У имеют наибольшее значение (М имеют 2 и U имеет 2 а Р имеет только 1) функция должна возвращать
artists_with_most_work(dictionary1())
['M', 'U']
Как я могу найти количество значений для каждого ключа и вернуть те, которые имеют наибольшее значение? Я полагал, что использование max() было бы хорошей идеей, но я не думаю, что правильно использую его в своей текущей попытке ниже. Благодаря тому, кто может помочь
Код:
def artist_with_most_work(db):
matches = []
for key, record_list in db.items():
for record in record_list:
if item in record:
max(db) = themax
matches.append(themax)
return matches
Спасибо, кажется, иногда возвращают ['U', 'M'] вместо ['M', 'U'] при тестировании можно сортировать это так, чтобы оно всегда делалось в порядке? Я пробовал делать maxcount.sort(), но это не работает, так как его int – n00bprogrammer22
Вы можете использовать OrderedDict, который сохранит порядок элементов по мере их вставки. Здесь ничего не изменилось бы, кроме определения db = OrderedDict() вместо db = {}. Кроме этого, вы можете отсортировать список, используя отсортированный (maxcount), который должен дать вам ['M', 'U'] – Tyg13
@ n00bprogrammer22: да, потому что вы передали в словаре, а словарь - неупорядоченная структура данных , Если вам нужны ваши ключи в определенном порядке, загрузите свои данные в объект 'collection.OrderedDict()'. –