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
  • 相关阅读:
    pycharm如何快速替换代码中的字符
    tcp三次握手四次挥手那些事
    Python之异常处理
    Python之单例模式
    ApplicationContext
    ContextLoaderListener作用详解
    DispatcherServlet--Spring的前置控制器作用简介
    web.xml中servlet的配置
    Hibernate各种主键生成策略与配置详解【附1--<generator class="foreign">】
    java.util.ConcurrentModificationException 解决办法(转)
  • 原文地址:https://www.cnblogs.com/liangliangzz/p/12625934.html
Copyright © 2011-2022 走看看