python - 如何按最长到最短对字典进行排序
问题描述
我有一个看起来像这样的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”应该在列表中的第一个而不是第二个?我在这里做错了什么?
解决方案
您需要参考 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'])]
推荐阅读
- java - 当我运行'cordova build android'时,我不断收到“无法运行”javac -version””
- jquery - 如何在 django 中使用 jquery 更改多个图像 src
- java - 迭代所有无平方复合材料 < L
- c# - 按索引访问实体框架表列
- java - 如何将 RecyclerView 放入 Fragment?
- php - 如何通过 html 表单将文件发送到 $_FILE?
- angular - Identity Server身份验证后如何关闭signinPopup()窗口oidc-client Angular
- php - 如何以 JSON 格式返回响应 - Codeigniter
- javascript - 箭头函数不应返回赋值 no-return-assign
- python - python tkinter optionmenu的问题:只选择最后一项