zoukankan      html  css  js  c++  java
  • Python按照list中dict的某个key进行排序

    在做项目的时候,遇到这样的数据:
    
     "trends": [
                   {
                        "name": "Rick Gates",
                        "promoted_content": null,
                        "query": "%22Rick+Gates%22",
                        "tweet_volume": 135732,
                        "url": "http://twitter.com/search?q=%22Rick+Gates%22"
                   },
                   {
                        "name": "#TheBachelorette",
                        "promoted_content": null,
                        "query": "%23TheBachelorette",
                        "tweet_volume": 91245,
                        "url": "http://twitter.com/search?q=%23TheBachelorette"
                   },
                   {
                        "name": "#KremlinAnnex",
                        "promoted_content": null,
                        "query": "%23KremlinAnnex",
                        "tweet_volume": 42654,
                        "url": "http://twitter.com/search?q=%23KremlinAnnex"
                   },
                   {
                        "name": "#LHHH",
                        "promoted_content": null,
                        "query": "%23LHHH",
                        "tweet_volume": 35252,
                        "url": "http://twitter.com/search?q=%23LHHH"
                   }]
    
    我需要做的就是根据tweet_volume的数值对trends里的元素进行排序。
    实现代码:
    把上面数据以字典的方式获取,相当于把取出的就是后面的列表,即
    trends=[
                   {
                        "name": "Rick Gates",
                        "promoted_content": null,
                        "query": "%22Rick+Gates%22",
                        "tweet_volume": 135732,
                        "url": "http://twitter.com/search?q=%22Rick+Gates%22"
                   },
                   {
                        "name": "#TheBachelorette",
                        "promoted_content": null,
                        "query": "%23TheBachelorette",
                        "tweet_volume": 91245,
                        "url": "http://twitter.com/search?q=%23TheBachelorette"
                   },
                   {
                        "name": "#KremlinAnnex",
                        "promoted_content": null,
                        "query": "%23KremlinAnnex",
                        "tweet_volume": 42654,
                        "url": "http://twitter.com/search?q=%23KremlinAnnex"
                   },
                   {
                        "name": "#LHHH",
                        "promoted_content": null,
                        "query": "%23LHHH",
                        "tweet_volume": 35252,
                        "url": "http://twitter.com/search?q=%23LHHH"
                   }]
    
    trends = sorted(trends,key = lambda e:e['tweet_volume'],reverse = True)
    考虑到有些数据是NULL,因此需要提前做个处理,对于空的tweet_volume设置为0,完整代码:
    
    for item in trends:
        if(item.get('tweet_volume') is None):
            item['tweet_volume'] = 0
        trends = sorted(trends,key = lambda e:.get('tweet_volume') ,reverse = True)
    
    
    建议用get方式获取,空值或数据不存在这样不会报错。
    在Python文档中看到一种性能更高的方法
    
    通过使用 operator 模块的 itemgetter 函数,可以非常容易的排序这样的数据结构
    
    因此上面的程序可以改写成
    
    
    from operator import itemgetter
    for item in trends:
        if(item.get('tweet_volume') is None):
            item['tweet_volume'] = 0
    trends = sorted(trends,key = itemgetter('tweet_volume'),reverse = True)

    本文参考地址:

    https://blog.csdn.net/qq_29303759/article/details/81902810
  • 相关阅读:
    团体程序设计天梯赛 L2-011 玩转二叉树 (25分)
    团体程序设计天梯赛 L2-010 排座位 (25分)(并查集)
    团体程序设计天梯赛 L2-009 抢红包 (25分)
    团体程序设计天梯赛 L2-007 家庭房产 (25分)
    团体程序设计天梯赛 L2-014 列车调度 (25分)(最长上升子序列)
    团体程序设计天梯赛 L2-006 树的遍历 (25分)
    团体程序设计天梯赛 L2-008 最长对称子串 (25分)
    团体程序设计天梯赛 L2-005 集合相似度 (25分)
    uva11401(Triangle Counting)
    UVA
  • 原文地址:https://www.cnblogs.com/liangliangzz/p/12625934.html
Copyright © 2011-2022 走看看