2012-04-09 4 views
1

Я новичок в Python (и stackoverflow) ... медведь со мной! У меня есть словарь, который выглядит следующим образом:Минимальная сумма из словаря списков в Python

valueDict[i] = [x,y]

Я хочу найти минимальный ключ на основе суммы х и у. Я знаю, что для словаря значений можно использовать:

minVal = min(valueDict, key=valueDict.get)

Но я не думаю, что я могу изменить этот подход для Dict списков.

+1

Отформатируйте код, и убедитесь, что вы даете пример правильно - 'min (dict, key = dict.get())' неверно. Кроме того, 'dict.get' является неоднозначным - похоже, вы ссылаетесь на метод' get' экземпляра 'dict', который вы также назвали' dict', но это также может означать несвязанный метод 'get'' dict 'класс. Вот почему вы не должны использовать общие встроенные функции как имена переменных даже в примерах. – agf

ответ

4

Вы можете предоставить любую функцию для аргумента keymin. Для словаря значений вы

minVal = min(dict, key=dict.get) # note no parentheses 

Если вы хотите к минимуму на основе суммы, вы можете сделать

minVal = min(dict, key=lambda i: sum(dict[i])) 
+3

Или, чтобы избежать поиска хэша для каждого элемента, 'min (dict.iteritems(), key = lambda k, v: sum (v)) [1]' – agf

4

Вы можете использовать:

minVal = min(d, key=lambda x: sum(d[x])) 

где d находится в Dict.

Смежные вопросы