简体   繁体   English

根据嵌套键对字典列表进行排序

[英]Sort list of dictionaries based on nested keys

[{'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 ? 有办法解决吗?

In order to sort list of dictionary with nested keys , you may use lambda expression as: 为了对带有嵌套键的字典列表进行排序,您可以使用lambda表达式作为:

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}}]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM