使用Python的sorted()函数和lambda表达式来对字典列表进行排序。lambda函数用于定义排序规则,并可以处理None值。
示例代码:
dicts = [{"name": "John", "age": 23, "gender": "Male"},
{"name": "Jane", "age": 35, "gender": "Female"},
{"name": "Jim", "age": None, "gender": "Male"},
{"name": "Susan", "age": 42, "gender": None},
{"name": "Bob", "age": 19, "gender": "Male"}]
keys = ["age", "name", "gender", ...] # 定义要排序的键,可以动态添加或删除
# 按照keys列表中的键进行排序
sorted_dicts = sorted(dicts, key=lambda x: tuple(x[k] if k in x and x[k] is not None else float('inf') for k in keys))
在lambda表达式中,对于每个键,我们首先检查字典中是否存在该键,如果存在且值不为None,则使用该值进行排序。如果不存在该键或值为None,则使用float('inf')来代替,确保None值被放在排序结果的最后面。
最终结果会是一个已排序的字典列表,按照指定的排序键(可以是动态的)进行排序,并将所有None值放在列表的末尾。
上一篇:按多个动态键将字典列表进行分组
下一篇:按多个对象进行分组的函数