python - Python,排序函数:按值排序字典返回意外列表
问题描述
我正在学习 python 排序函数,我有一个 sample_dictionary,我尝试按它的值排序。示例如下: 姓名:年龄对
sample_dict = {'andi': 65, 'george': 34, 'elvis': 44, 'david': 25, 'caleb': 18, 'broady': 27}
# Let's sort a dictionary by value
print("Key-based sort: ", sorted(sample_dict, key=lambda sample_dict: sample_dict[1]))
预期结果如下,因为 caleb 的年龄只有 18 岁,为什么 andi 的年龄是 65 岁:
['caleb', 'david','broady','george','elvis','andi']
但是当我在 python 3 中运行时,它给出了以下结果:
['david', 'caleb', 'george', 'elvis', 'andi', 'broady']
大卫年龄是25
,迦勒是18
。安迪是老大....
为什么 为什么 为什么?我的理解是错误的 sample_dict[1] 并不意味着年龄?
解决方案
这将是sorted(sample_dict.items(), key = lambda x: x[1])
当您调用 时sample_dict.items()
,它返回一个元组列表,然后 sorted 方法对其进行迭代并使用 lambda 进行排序。
如果您不调用它 on sample_dict.items()
,则x
lambda 中的 获取键值。你它排序在名称的第二个字符。
正如@Karl 指出的那样,另一种方法是:
sorted(sample_dict, key = lambda x: sample_dict[x])
推荐阅读
- git - 远程 git 存储库中的文件重命名失败
- javascript - 2个不同大小的数组,一旦达到最大索引,就可以在循环中重用一个数组
- kendo-ui - 在 Kendo for Angular 中将上下文菜单添加到对话框
- typescript - 如何编写接受实现接口的类作为参数的 TypeScript 函数?
- java - 卡夫卡消费者延迟
- r - 从 R 中不在全局环境中的包中排除自动完成数据对象
- android - Android 仿真 + 虚拟服务器?视窗 2016 服务器
- javascript - 是否可以使用 JS DOM Element 方法在邮递员中浏览 html 文档
- java - 无法使用 selenium java 获取重定向的 URL
- regex - 如何从 Symfony 路由模式正则表达式中排除特定链接?