这里是一个示例代码,它按照非唯一属性对列表进行排序,并返回该属性前后的X个元素:
def sort_by_attribute(lst, attribute, x):
# 按照属性对列表进行排序
sorted_lst = sorted(lst, key=lambda item: item.get(attribute))
# 找到目标属性的索引
index = None
for i, item in enumerate(sorted_lst):
if item.get(attribute) == x:
index = i
break
# 返回目标属性前后的X个元素
return sorted_lst[max(0, index - x):index] + sorted_lst[index+1:index+1+x]
# 示例使用
data = [
{'name': 'Alice', 'age': 25},
{'name': 'Bob', 'age': 30},
{'name': 'Charlie', 'age': 25},
{'name': 'David', 'age': 35},
{'name': 'Eve', 'age': 30},
]
result = sort_by_attribute(data, 'age', 30)
print(result)
这段代码将根据age
属性对列表进行排序,并返回age
为30的元素的前后一个元素。在这个示例中,返回的结果将是[{'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 30}, {'name': 'Eve', 'age': 30}, {'name': 'David', 'age': 35}]
。
上一篇:按照非括号中包含的单词分割