我有一本字典
d={'d': ['dog', 'dance', 'dragon'], 'c': ['cow', 'cotton'], 'a': ['apple'], 'r': ['robot']}
我希望定义一个函数,它将按照集合的大小对它们进行排序。也就是说,因为" d"该值中包含3个项目," c"有两个项目," a"和" r"每个都有一个项目,我想按顺序排列一个字典。所以
def order_by_set_size(d):
return sorted(d, key=lambda k: len(d[k]), reverse=True)
到目前为止我所拥有的是
override func viewDidLoad() -> Void{
super.viewDidLoad()
dummy.removeFromSuperview()
}
这给了我一个清单,但我无法弄清楚如何让它给我一本字典。我已经查看了很多其他问题并尝试了不同的代码变体,这就像我能得到的一样。
(我使用的是Python 3)
答案 0 :(得分:2)
您需要使用OrderedDict 见https://docs.python.org/3/library/collections.html#collections.OrderedDict
基于他们的例子
from collections import OrderedDict
d={'a': ['apple'], 'd': ['dog', 'dance', 'dragon'], 'r': ['robot'], 'c': ['cow', 'cotton']}
ordered = OrderedDict(sorted(d.items(),key=lambda t: len(t[1]),reverse=True))
答案 1 :(得分:0)
根据定义,字典是无序的键值对。因此,下面的代码是正确的,因为如果要对其进行排序,则只能获取列表。换句话说,字典无法排序,因此给出的任务是不可能的。
def order_by_set_size(d):
return sorted(d, key=lambda k: len(d[k]), reverse=True)