2016-07-31 56 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 +,並且在第2行的d中出現語法錯誤。我在這裏錯過了什麼? – NeverResting

+0

我不知道,這段代碼適用於Python 2.7.10和3.5.0。你的版本是什麼,你可以在這裏評論這個錯誤嗎? –