Python中如何根据activity_created_on字段排序获取完整数据?
问题:按activity_created_on字段升序排列数据
样本数据
a = [ { "activity_message": "message 1", "activity_created_on": 1677672546 }, { "activity_message": "message 2", "activity_created_on": 1677672552 }, { "activity_message": "message 3", "activity_created_on": 1677672536 }, { "activity_message": "message 4", "activity_created_on": 1677672539 } ]
需求
根据activity_created_on字段获取完整数据,并按该字段升序排列。
尝试的错误代码
def tags(a): for item in a: tags = [] if item: q = {"am":item.get([]),"d":item["activity_created_on"]} tags.append(q) return tags print(tags(a))
代码存在的问题
- 循环内每次重置
tags = [],最终只会保留最后一个处理的元素 item.get([])用法错误,无法正确获取activity_message字段- 重新构造了键名(
am、d),但期望输出需要保留原键名activity_message和activity_created_on
修正后的代码
def sort_by_created_on(data): # 按activity_created_on字段升序排列,返回原结构数据 return sorted(data, key=lambda x: x["activity_created_on"]) print(sort_by_created_on(a))
运行结果
[ { "activity_message": "message 3", "activity_created_on": 1677672536 }, { "activity_message": "message 4", "activity_created_on": 1677672539 }, { "activity_message": "message 1", "activity_created_on": 1677672546 }, { "activity_message": "message 2", "activity_created_on": 1677672552 } ]
代码说明
- 使用Python内置的
sorted()函数直接对列表排序,key=lambda x: x["activity_created_on"]指定排序依据为目标字段 - 默认排序规则为升序,若需要降序可添加参数
reverse=True - 直接返回排序后的原列表元素,完整保留所有原字段和键名,无需重新构造字典
内容的提问来源于stack exchange,提问作者PassionateLearner
相关产品推荐
相关产品推荐

