2017-08-04 86 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

相关问题