优雅地从元组列表创建对字典的方法?
我定义了一个元组,内容是:
(槽位, 游戏ID, 比特率)
然后我创建了一个叫 myListOfTuples
的列表,这个列表里面可能有多个元组,它们的 gameid
可能是一样的。
比如,这个列表可能看起来像这样:
[
(1, "Solitaire", 1000 ),
(2, "Diner Dash", 22322 ),
(3, "Solitaire", 0 ),
(4, "Super Mario Kart", 854564 ),
... and so on.
]
从这个列表中,我需要创建一个字典,里面的内容是成对的 - ( gameId
, bitrate
),其中 bitrate
是我在 myListOfTuples
中遇到的第一个对应 gameId
的比特率。
比如,按照上面的例子,这个成对的字典只会包含一个对,内容是 一个 对应 gameId
"Solitaire" : ("Solitaire", 1000 )
,因为1000是我找到的第一个比特率。
注意:我可以用这个方法创建一个独特游戏的集合:
uniqueGames = set( (e[1] for e in myListOfTuples ) )
2 个回答
4
{ gameId: bitrate for _, gameId, bitrate in reversed( myListOfTuples ) }.items( )
(这是一个视图,不是一个集合。它有类似集合的操作,但如果你需要一个集合,可以把它转换成集合。)
你确定你想要一个集合,而不是一个包含游戏ID: 比特率
的字典吗?后者在我看来更适合这个问题。
10
对于Python 2.6版本
dict(x[1:] for x in reversed(myListOfTuples))
如果你使用的是Python 2.7或3.1版本,可以参考katrielalex的回答