如何在Python中對dicts列表進行排序

disable發表於2021-09-11

問題:在使用MongoDB組合函式(它類似於SQL的GROUP BY)來聚合專案的一些結果。此功能雖然非常酷,但它不會對分組資料進行排序。

如何在Python中對dicts列表進行排序

解決:以下是如何對資料進行排序。(它只有一行Python,但很難記住如何做到這一點。)

DATA是mongoDB組函式的輸出。我想按照這個列表來排序'ups_ad'。

from pprint import pprintDATA = [
    {u'avg': 2.9165000000000001,
     u'count': 10.0,
     u'total': 29.165000000000003,
     u'ups_ad': u'10.194.154.49:80'},
    {u'avg': 2.6931000000000003,
     u'count': 10.0,
     u'total': 26.931000000000001,
     u'ups_ad': u'10.194.155.176:80'},
    {u'avg': 1.9860909090909091,
     u'count': 11.0,
     u'total': 21.847000000000001,
     u'ups_ad': u'10.195.71.146:80'},
    {u'avg': 1.742818181818182,
     u'count': 11.0,
     u'total': 19.171000000000003,
     u'ups_ad': u'10.194.155.48:80'}
    ]data_sorted = sorted(DATA, key=lambda item: item['ups_ad'])pprint(data_sorted)

結果:

[{u'avg': 2.9165000000000001,
  u'count': 10.0,
  u'total': 29.165000000000003,
  u'ups_ad': u'10.194.154.49:80'},
 {u'avg': 2.6931000000000003,
  u'count': 10.0,
  u'total': 26.931000000000001,
  u'ups_ad': u'10.194.155.176:80'},
 {u'avg': 1.742818181818182,
  u'count': 11.0,
  u'total': 19.171000000000003,
  u'ups_ad': u'10.194.155.48:80'},
 {u'avg': 1.9860909090909091,
  u'count': 11.0,
  u'total': 21.847000000000001,
  u'ups_ad': u'10.195.71.146:80'}]

參考文獻:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/200/viewspace-2837507/,如需轉載,請註明出處,否則將追究法律責任。

相關文章