首页 > 解决方案 > 如何按最长到最短对字典进行排序

问题描述

我有一个看起来像这样的python字典

d = {
    'USA': ['US', 'USA', 'United States'],
    'BRA': ['Brazil', 'BR'],
    'DEU': ['Germany', 'German', 'French', 'France', 'FR', 'UK', ' United Kingdom']
}

我正在尝试按最长到最短(列表长度)排序,我发现这是这样做的方法,但排序不正确。

srt = sorted(d.items(), key=lambda x: x[1], reverse=True)

我的输出是:

[('USA', ['US', 'USA', 'United States']), ('DEU', ['Germany', 'German', 'French', 'France', 'FR', 'UK', ' United Kingdom']), ('BRA', ['Brazil', 'BR'])]

关键“DEU”应该在列表中的第一个而不是第二个?我在这里做错了什么?

标签: pythonpython-3.x

解决方案


您需要参考 lambda 中的列表长度,如下所示:

srt = sorted(d.items(), key=lambda x: len(x[1]), reverse=True)

这将产生:

[('DEU', ['Germany', 'German', 'French', 'France', 'FR', 'UK', ' United Kingdom']), ('USA', ['US', 'USA', 'United States']), ('BRA', ['Brazil', 'BR'])]

推荐阅读