簡體   English   中英

如何根據多個字典鍵對 python 字典進行排序?

[英]How to sort python dict based on multiple dict keys?

對於以下數據,我希望首先按“日期”屬性對數據進行排序,然后按“名稱”屬性對數據進行排序。

Input:
results = {
   "a":{
      "date":"20140206",
      "bytes":"154",
      "name":"cos"
   },
   "b":{
      "date":"20140207",
      "bytes":"300",
      "name":"cos"
   },
   "c":{
      "date":"20140206",
      "bytes":"279",
      "name":"phil"
   },
   "d":{
      "date":"20140207",
      "bytes":"241",
      "name":"phil"
   }
}

我正在嘗試以下有效的代碼,但我不確定它是如何先按日期然后按名稱排序的。

results = collections.OrderedDict(sorted(results.items()))
Output:
results = {
   "a":{
      "date":"20140206",
      "bytes":"154",
      "name":"cos"
   },
   "c":{
      "date":"20140206",
      "bytes":"279",
      "name":"phil"
   },
   "b":{
      "date":"20140207",
      "bytes":"300",
      "name":"cos"
   },
   "d":{
      "date":"20140207",
      "bytes":"241",
      "name":"phil"
   }
}

有沒有其他方法可以明確指定首先按日期屬性排序,然后按名稱屬性排序?

您必須使用key=進行自定義排序。

如果您想先按日期排序,然后按名稱排序,則需要使用它們的元組作為排序鍵

results = collections.OrderedDict(sorted(results.items(), key=lambda s: (s[1]['date'], s[1]['name'])))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM