下面是一个示例代码,展示了如何按照多个条件对对象数组进行排序,并处理可能的未定义值:
# 定义一个对象数组
objects = [
{'name': 'John', 'age': 25, 'city': 'New York'},
{'name': 'Alice', 'age': 30, 'city': 'London'},
{'name': 'Bob', 'age': 20, 'city': 'Paris'},
{'name': 'Jane', 'age': None, 'city': 'Tokyo'},
{'name': 'Mike', 'age': 35, 'city': None},
{'name': 'Alex', 'age': None, 'city': None}
]
# 定义排序函数
def sort_objects(obj):
# 处理可能的未定义值
age = obj.get('age', float('inf')) # 默认值为正无穷大
city = obj.get('city', '') # 默认值为空字符串
# 按照多个条件排序
return (age, city)
# 对对象数组进行排序
sorted_objects = sorted(objects, key=sort_objects)
# 打印排序结果
for obj in sorted_objects:
print(obj)
在上面的示例中,我们定义了一个对象数组objects
,其中包含了一些对象,每个对象有name
、age
和city
属性。我们想要按照age
和city
的条件对数组进行排序。
在sort_objects
函数中,我们使用了get
方法来获取age
和city
的值,并提供了默认值。如果age
或city
是未定义的(即为None
),我们将它们的默认值设为正无穷大和空字符串。
然后,我们使用sorted
函数对objects
数组进行排序,传入sort_objects
函数作为key
参数。这样,sorted
函数将会根据sort_objects
函数的返回值进行排序。
最后,我们打印排序结果。注意,排序结果中的对象是按照age
的升序排列,并且对于相同age
的对象,按照city
的字母顺序排列。未定义值被当作最大值进行排序。
上一篇:按多个条件和操作进行分组