以下是一个示例代码,展示了如何按照嵌套属性对数组进行排序:
def sort_array_by_nested_property(arr, property):
# 定义一个用于排序的辅助函数
def get_nested_property(item):
# 使用reduce函数获取嵌套属性的值
value = reduce(lambda obj, key: obj[key], property.split("."), item)
return value
# 使用sorted函数对数组进行排序,传入排序的辅助函数
sorted_arr = sorted(arr, key=get_nested_property)
return sorted_arr
# 测试
data = [
{"name": "Alice", "age": 25, "address": {"city": "New York"}},
{"name": "Bob", "age": 30, "address": {"city": "London"}},
{"name": "Charlie", "age": 20, "address": {"city": "Paris"}},
]
sorted_data = sort_array_by_nested_property(data, "address.city")
print(sorted_data)
在上面的示例中,我们定义了一个sort_array_by_nested_property
函数,它接受一个数组和一个嵌套属性的字符串作为参数。函数内部首先定义了一个辅助函数get_nested_property
,该函数使用reduce
函数来获取嵌套属性的值。然后,我们使用sorted
函数对数组进行排序,传入辅助函数get_nested_property
作为排序的依据。最后,我们打印排序后的数组。
在示例中,我们使用了一个包含人员信息的数组data
,每个人都有一个name
属性、age
属性和address
属性,其中address
属性又包含一个city
属性。我们通过调用sort_array_by_nested_property
函数,并传入"address.city"
作为嵌套属性,对数组进行按address.city
属性排序。结果输出为按照address.city
属性排序后的数组。
上一篇:按嵌套日期对象对嵌套列表进行排序