从元组列表中创建对词典的优雅方式?

时间:2010-08-11 11:15:35

标签: python

我已经定义了一个元组:     (插槽,游戏,比特率)

并创建了一个名为myListOfTuples的列表。在此列表中可能是包含相同gameid的元组。

E.g。列表可能如下所示:

[
   (1, "Solitaire", 1000 ),
   (2, "Diner Dash", 22322 ),
   (3, "Solitaire", 0 ),
   (4, "Super Mario Kart", 854564 ),
   ... and so on.
]

从此列表中,我需要创建一个对词典 - (gameIdbitrate),其中bitrate的{​​{1}}是我的第一个gameId我发现gameId中的特定myListOfTuples

E.g。从上面的例子中 - 对词典只包含一个gameId“Solitaire”:("Solitaire", 1000 )因为1000是第一个找到的比特率。

NB。我可以创建一组独特的游戏:

uniqueGames = set( (e[1] for e in myListOfTuples ) )

2 个答案:

答案 0 :(得分:10)

对于python2.6

dict(x[1:] for x in reversed(myListOfTuples))

如果你有Python2.7或3.1,你可以使用katrielalex的答案

答案 1 :(得分:4)

{ gameId: bitrate for _, gameId, bitrate in reversed( myListOfTuples ) }.items( )

(这是一个视图,而不是一个集合。它具有setlike操作,但如果你需要一个集合,则将其转换为一个。)

您确定要一套,而不是gameId: bitrate的字典吗?在我看来,后者对于这个问题来说是一个更自然的数据结构。