我的模型以下列格式返回有关PC游戏的信息。格式为game index
和game value
。这是我的sim_sorted
。
[(778, 0.99999994), (1238, 0.9999997), (1409, 0.99999905), (1212, 0.99999815)]
我通过索引数据库(df_indieGames)来检索有关游戏的信息:
sims_sorted = sorted(enumerate(sims), key=lambda item: -item[1])
results = {}
for val in sims_sorted[:4]:
index, value = val[0], val[1]
results[df_indieGames.game_name.loc[index]] =
{
"Genre":df_indieGames.genre.loc[index],
"Rating": df_indieGames.score.loc[index],
"Link": df_indieGames.game_link[index]
}
但是,这样的数据结构难以排序(按评级)。是否有更好的方法来存储信息,以便更容易检索和排序?谢谢。
这是结果的输出:
{u'Diehard Dungeon': {'Genre': u'Roguelike',
'Link': u'http://www.indiedb.com/games/diehard-dungeon',
'Rating': 8.4000000000000004},
u'Fork Truck Challenge': {'Genre': u'Realistic Sim',
'Link': u'http://www.indiedb.com/games/fork-truck-challenge',
'Rating': 7.4000000000000004},
u'Miniconomy': {'Genre': u'Realistic Sim',
'Link': u'http://www.indiedb.com/games/miniconomy',
'Rating': 7.2999999999999998},
u'World of Padman': {'Genre': u'First Person Shooter',
'Link': u'http://www.indiedb.com/games/world-of-padman',
'Rating': 9.0}}
更新
ziddarth建议的解决方案如下:
result = sorted(results.iteritems(), key=lambda x: x[1]['Rating'], reverse=True)
答案 0 :(得分:1)
您可以使用以下代码按评分排序。使用元组调用lambda函数,第一个元素是字典键,第二个元素是相应键的字典值,因此可以使用lambda函数获取嵌套字典中的任何值
sorted(results.iteritems(), key=lambda x: x[1]['Rating'])