Reputation: 61
[{'AvailableOffers': (d7b000a:Order {Amount:1000,Name:"000091",OfferedC:"JD",SeekingC:"Taobao",UserName:"xalima",ValidTill:"2019-11-30"}), 'Participants': 2, 'OrderID': ['000089', '000091', '000089']}
{'AvailableOffers': (d7b000a:Order {Amount:1000,Name:"000091",OfferedC:"JD",SeekingC:"Taobao",UserName:"xalima",ValidTill:"2019-11-30"}), 'Participants': 2, 'OrderID': ['000089', '000091', '000089']}
{'AvailableOffers': (b222004:Order {Amount:1000,Name:"000093",OfferedC:"JD",SeekingC:"China Airline",UserName:"yunis",ValidTill:"2017-11-11"}), 'Participants': 3, 'OrderID': ['000089', '000093', '000090', '000089']}
{'AvailableOffers': (d7b000a:Order {Amount:1000,Name:"000091",OfferedC:"JD",SeekingC:"Taobao",UserName:"xalima",ValidTill:"2019-11-30"}), 'Participants': 5, 'OrderID': ['000089', '000091', '000096', '000095', '000090', '000089']}
{'AvailableOffers': (d7b000a:Order {Amount:1000,Name:"000091",OfferedC:"JD",SeekingC:"Taobao",UserName:"xalima",ValidTill:"2019-11-30"}), 'Participants': 6, 'OrderID': ['000089', '000091', '000096', '000097', '000093', '000090', '000089']}]
That is the list dictionary I want to sort, what i can do now is to sort
ListData_by_Participants = sorted(ListData, key=itemgetter("Participants"))
What i want to get help is
ListData_by_Validity = sorted(ListData,
key=itemgetter("AvailableOffers")("ValidTill"))
is there a way to manage this ?
Upvotes: 3
Views: 1665
Reputation: 48057
In order to sort list of dictionary with nested keys, you may use lambda expression as:
my_dict_list = [{'parent_key': {'my_key_1': 10, 'my_key_2': 2}},
{'parent_key': {'my_key_1': 5, 'my_key_2': 4}},
{'parent_key': {'my_key_1': 10, 'my_key_2': 6}},
{'parent_key': {'my_key_1': 5, 'my_key_2': 2}},
{'parent_key': {'my_key_1': 10, 'my_key_2': 3}},
]
sorted(my_dict_list, key=lambda x: (
x['parent_key']['my_key_1'], x['parent_key']['my_key_2']))
# value of first 'key' to sort-^ ^
# in case of same value for first 'key'-^
# sort based on second key -------------^
which returns the sorted list as:
[{'parent_key': {'my_key_2': 2, 'my_key_1': 5}},
{'parent_key': {'my_key_2': 4, 'my_key_1': 5}},
{'parent_key': {'my_key_2': 2, 'my_key_1': 10}},
{'parent_key': {'my_key_2': 3, 'my_key_1': 10}},
{'parent_key': {'my_key_2': 6, 'my_key_1': 10}}]
Upvotes: 5