JohnJ
JohnJ

Reputation: 7056

understanding python dictionary sorting

I am trying to understand dictionary sorting in python and I am stumped by this perplexing issue (I am sure it is something dumb but I am nt able to decode the problem).

So I have this nested dict:

some_dict={'10_key0': {'pass_fail': 1, 'scoring': 94}, '10_key1': {'pass_fail': 0, 'scoring': 38}}

I now try and sort like so:

>>> sorted(some_dict, key=some_dict.get('pass_fail'), reverse=True)
['10_key1', '10_key0']

I dont understand the output - I would have thought it should be:

['10_key0', '10_key1']

Is this not the case? What am I missing?

Upvotes: 0

Views: 61

Answers (1)

Carcigenicate
Carcigenicate

Reputation: 45742

Your key is off here. some_dict.get('pass_fail') evaluates to None, so your call is essentially equivalent to sorted(some_dict, key=None, reverse=True), which is the same as not passing a key at all. You mean to pass a function that looks at the current element being considered:

key=lambda k:some_dict[k]["pass_fail"]

Upvotes: 5

Related Questions