2017-08-04 83 views
-1

我有一本字典,每個項目都有不同的屬性。通過不一致的變量對python字典進行排序

{ "Item1": { "Name" : "Tom", "Color" : "Blue", "Weight" = "10lb" }, "Item2": { "Name" : "Billy", "Weight" : "5lb" } } 

問題是我想按Color排序,其中Item2的顏色爲None,因爲它沒有指定。所以排序會把顏色當作「

我可以遍歷整個字典並將Color : ""添加到缺少屬性的任何東西,但它是一個非常大的字典,它需要運行得相對較快。

+0

你嘗試過這麼遠嗎?顯示你的代碼。 – Soviut

+0

你在排序時提供了一個lambda函數,所以你可以處理None情況。此外,似乎是作業的錯誤數據結構 –

+0

提示:'dict.get'方法有一個可選的默認參數。 – Kevin

回答

6

您可以使用dict.get('Color', default)爲顏色提供默認值。

如果d是你的字典:

In [20]: sorted(d.keys(), key=lambda k:d[k].get('Color', '')) 
Out[20]: ['Item2', 'Item1'] 
+4

我想你可能會跳過'd.keys()',只需使用'd'就可以滿足要求 –

+1

@MoinuddinQuadri我相信你是對的。 [我測試了它](https://repl.it/Jx7G/0),它似乎工作正常。 –

+0

你是我的英雄。謝謝。我沒有意識到你可以將默認值傳遞給get。 Python新手在這裏。是的,僅此而已就足夠了 – Ash

相關問題