我有一本字典
d={'a': ['apple'], 'd': ['dog', 'dance', 'dragon'], 'r': ['robot'], 'c': ['cow', 'cotton']}
我想定义一个函数,根据集合的大小对它们进行排序。也就是说,由于“d”的值有 3 个项目,“c”有 2 个项目,“a”和“r”各有一个项目,所以我想要一个按该顺序的字典。所以
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)
最佳答案
你需要使用 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))
关于python - 在Python中,给定一个包含值列表的字典,如何根据该列表中的项目数量对字典进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46922607/