【问题标题】:Sorting dictionary inside a dictionary python在字典python中对字典进行排序
【发布时间】:2016-12-10 08:27:10
【问题描述】:

我正在尝试将此字典从最高数字排序到最低数字。但是我尝试对字典进行排序,但每次都会出现以下错误: TypeError:字符串索引必须是整数 不断出现。这是我编码的

aurl_params = {}
dayum = requests.get(starturl, params = aurl_params)
liste = dayum.json()
newlist = sorted(liste, key=lambda k: k['data'[0].get('media_count'),reverse=True)
print newlist

我应该如何排序,以便“media_count”从高到低..

{u'data': [{u'media_count': 103, u'name': u'h\xe9llo'},
           {u'media_count': 12507183, u'name': u'hello'},
           {u'media_count': 867, u'name': u'hell\xf4'},
           {u'media_count': 588, u'name': u'hell\xf3'},
           {u'media_count': 321, u'name': u'he\u013alo'},
           {u'media_count': 236, u'name': u'hell\xf8'},
           {u'media_count': 6009, u'name': u'hell\xf6'},
           {u'media_count': 405, u'name': u'hello\U0001f61c'},
           {u'media_count': 405, u'name': u'hello\U0001f30e'},
           {u'media_count': 5717, u'name': u'hello\u270c'},
           {u'media_count': 47420, u'name': u'hellosun'},
           {u'media_count': 590676, u'name': u'helloworld'},
           {u'media_count': 94422, u'name': u'hellomay'},
           {u'media_count': 87159, u'name': u'helloicp'},
           {u'media_count': 344138, u'name': u'helloweekend'},
           {u'media_count': 341243, u'name': u'hellospring'},
           {u'media_count': 538183, u'name': u'helloween'},
           {u'media_count': 235522, u'name': u'hello_france'},
           {u'media_count': 375091, u'name': u'hellosummer'},
           {u'media_count': 319766, u'name': u'hellobc'},
           {u'media_count': 455104, u'name': u'hello2016'},
           {u'media_count': 43682, u'name': u'hellogoodbye'},
           {u'media_count': 166595, u'name': u'hellofresh'},
           {u'media_count': 135937, u'name': u'hellothere'},
           {u'media_count': 42887, u'name': u'hellopeople'},
           {u'media_count': 62131, u'name': u'helloinstagram'},
           {u'media_count': 347414, u'name': u'hello2015'},
           {u'media_count': 331175, u'name': u'hellodecember'},
           {u'media_count': 49119, u'name': u'hellovenus'},
           {u'media_count': 41032, u'name': u'hellonwheels'},
           {u'media_count': 64925, u'name': u'hello2013'},
           {u'media_count': 69764, u'name': u'helloproject'},
           {u'media_count': 70193, u'name': u'hello_bluey'},
           {u'media_count': 64549, u'name': u'hellosunday'},
           {u'media_count': 42035, u'name': u'hellonearth'},
           {u'media_count': 56714, u'name': u'helloladies'},
           {u'media_count': 198943, u'name': u'helloseptember'},
           {u'media_count': 67861, u'name': u'helloapril'},
           {u'media_count': 31560, u'name': u'hellotuesday'}],
 u'meta': {u'code': 200}}

【问题讨论】:

    标签: python sorting dictionary


    【解决方案1】:

    使用以下方法获得所需的结果:

    newlist = sorted(liste['data'], key=lambda o: o['media_count'], reverse=True)
    print(newlist)
    

    需要排序的序列是liste['data']

    【讨论】:

      【解决方案2】:
      newlist = sorted([i['media_count']for i in liste['data']], reverse=True)
      print(newlist)
      

      出来:

      [12507183, 590676, 538183, 455104, 375091, 347414, 344138, 341243, 331175, 319766, 235522, 198943, 166595, 135937, 94422, 87159, 70193, 69764, 67861, 64925, 64549, 62131, 56714, 49119, 47420, 43682, 42887, 42035, 41032, 31560, 6009, 5717, 867, 588, 405, 405, 321, 236, 103]
      

      【讨论】:

        猜你喜欢
        • 2023-04-05
        • 2014-11-10
        • 2017-07-12
        • 1970-01-01
        • 2021-04-17
        • 2016-06-08
        • 1970-01-01
        • 2018-10-19
        • 2014-05-26
        相关资源
        最近更新 更多