如何在Python中以数据结构优化保存数据

时间:2015-10-05 19:03:32

标签: python dictionary

我的模型以下列格式返回有关PC游戏的信息。格式为game indexgame 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)

1 个答案:

答案 0 :(得分:1)

您可以使用以下代码按评分排序。使用元组调用lambda函数,第一个元素是字典键,第二个元素是相应键的字典值,因此可以使用lambda函数获取嵌套字典中的任何值

sorted(results.iteritems(), key=lambda x: x[1]['Rating'])