在Python中,给定字典中包含值列表的字典,如何根据该列表中的项目数量对字典进行排序?

达娜

我有一本字典

d={'a': ['apple'], 'd': ['dog', 'dance', 'dragon'], 'r': ['robot'], 'c': ['cow', 'cotton']}

我想定义一个函数,该函数将按照集合的大小对其进行排序。也就是说,由于“ d”的值包含3个项,“ c”的值包含2个项,而“ a”和“ r”的值均为1个,因此我希望按此顺序创建字典。所以

d={'d': ['dog', 'dance', 'dragon'], 'c': ['cow', 'cotton'], 'a': ['apple'],  'r': ['robot']}

我到目前为止所拥有的是

def order_by_set_size(d):
    return sorted(d, key=lambda k: len(d[k]), reverse=True)

这给了我一个列表,但是我不知道如何让它给我一本字典。我研究了很多其他问题,并尝试了不同的代码变体,这与我所能接近的差不多。

(我正在使用Python 3)

Srgrn

您需要使用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))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章