I'm trying to sort a dict
's value where the value is a dict
where the value is a list
of two integers. I'm trying to sort the rows in the inner dict
by the first integer of the list
.
This is the value of the dict
:
{'EQUITY': {'CA': [15, 20], 'US': [25, 30]}, ... }
Here, the 'US' row should come before the 'CA' row after sorting.
This is what I'm currently trying:
dict(sorted(data.items(), key=lambda item: item[1][ ?? ], reverse=True))
how should I index into the inner dict from here ??
Thanks in advance for the help.
CodePudding user response:
You are almost there. Try the following, which uses dict comprehension and sorted
with key
parameter:
dct = {'EQUITY': {'CA': [15, 20], 'US': [25, 30]}, 'FUTURE': {'CA': [5, 5], 'US': [10, 2]}}
output = {k: dict(sorted(d.items(), key=lambda item: item[1][0], reverse=True)) for k, d in dct.items()}
print(output)
# {'EQUITY': {'US': [25, 30], 'CA': [15, 20]}, 'FUTURE': {'US': [10, 2], 'CA': [5, 5]}}
Here, each item
of d.items()
would be a tuple like ('CA', [15, 20])
. Therefore, to sort by 15
, you need item[1][0]
.