优雅地从元组列表创建对字典的方法?

7 投票
2 回答
4524 浏览
提问于 2025-04-16 02:37

我定义了一个元组,内容是:

(槽位, 游戏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的回答

撰写回答