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

标签 python dictionary

我有一本字典

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/

相关文章:

python - Django 请求数据返回 str 而不是 list

用于英国境外邮政编码的 Python 正则表达式

c# - 复杂的 LINQ 查询与复杂的 for 循环

python - 如何在 Protobuf 中序列化嵌套消息中的默认值

python - Lookahead 更新字典列表

Django POST 子字典

c++ - 阅读字典并打印出给定长度的单词

python - 无法合并多个输入 tf.keras 模型/错误 : Graph disconnected: cannot obtain value for tensor Tensor

python - Spark数据帧是否像pandas一样每行都有 "row name"?

python - 图片无法发送到我的服务器