Reputation: 11493
I have defined a tuple thus: (slot, gameid, bitrate)
and created a list of them called myListOfTuples
. In this list might be tuples containing the same gameid
.
E.g. the list can look like:
[
(1, "Solitaire", 1000 ),
(2, "Diner Dash", 22322 ),
(3, "Solitaire", 0 ),
(4, "Super Mario Kart", 854564 ),
... and so on.
]
From this list, I need to create a dictionary of pairs - ( gameId
, bitrate
), where the bitrate
for that gameId
is the first one that I came across for that particular gameId
in myListOfTuples
.
E.g. From the above example - the dictionary of pairs would contain only one pair with gameId
"Solitaire" : ("Solitaire", 1000 )
because 1000 is the first bitrate found.
NB. I can create a set of unique games with this:
uniqueGames = set( (e[1] for e in myListOfTuples ) )
Upvotes: 7
Views: 4531
Reputation: 304147
For python2.6
dict(x[1:] for x in reversed(myListOfTuples))
If you have Python2.7 or 3.1, you can use katrielalex's answer
Upvotes: 10
Reputation: 123632
{ gameId: bitrate for _, gameId, bitrate in reversed( myListOfTuples ) }.items( )
(This is a view, not a set. It has setlike operations, but if you need a set, cast it to one.)
Are you sure you want a set, not a dictionary of gameId: bitrate
? The latter seems to me to be a more natural data structure for this problem.
Upvotes: 4