首页 > 解决方案 > 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] 并不意味着年龄?

标签: python

解决方案


这将是sorted(sample_dict.items(), key = lambda x: x[1])

当您调用 时sample_dict.items(),它返回一个元组列表,然后 sorted 方法对其进行迭代并使用 lambda 进行排序。

如果您不调用它 on sample_dict.items(),则xlambda 中的 获取键值。你它排序在名称的第二个字符。

正如@Karl 指出的那样,另一种方法是: sorted(sample_dict, key = lambda x: sample_dict[x])


推荐阅读