2016-07-31 57 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。你的版本是什么,你可以在这里评论这个错误吗? –