2016-07-31 3 views
-6

Я работаю с API, который возвращает значения в этом формате:словаря Сортировки на основе нижнего словаря значения

raw = [{'Name': 'Erica','Value':12},{'Name':'Sam','Value':8},{'Name':'Joe','Value':60}] 

Я пытаюсь вернуть «имя» людей с высшей 2 «ценностью»:

result = ['Joe','Erica'] 

Каков наиболее эффективный способ для этого?

+3

Где ваш * текущий * способ и как вы думаете, что он может быть более эффективным? Кроме того, почему вы думаете, что это должно быть? – jonrsharpe

+1

Почему вы используете список диктов вместо одного имени для сопоставления имен символов? –

+0

@tobias_k Это результат, сгенерированный API (который я не контролирую), и, таким образом, это начальные данные, которые я должен работать с – NeverResting

ответ

-1
raw = [{'Name': 'Erica','Value':12},{'Name':'Sam','Value':8},{'Name':'Joe','Value':60}] 

raw.sort(key=lambda d: d['Value'], reverse=True) 

result = [] 
for i in range(2): 
    result.append(raw[i]['Name']) 

print(result) # => ['Joe', 'Erica'] 

печати (результат)

Попробуйте это.

+0

Я использую Python 3.x +, и я получаю синтаксическую ошибку в d в строке 2. Что мне здесь не хватает? – NeverResting

+0

Я не знаю, этот код работает для меня как на Python 2.7.10, так и на 3.5.0. Какова ваша версия, и вы можете прокомментировать здесь ошибку? –

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