首页 新闻 会员 周边

ls = list(dc.items()) ls.sort(key=lambda x:x[1],reverse=True)必须是dc.items()吗,直接ls = list(dc)

0
[已解决问题] 解决于 2026-03-26 21:45

ls = list(dc.items()) ls.sort(key=lambda x:x[1],reverse=True)必须是dc.items()吗,直接ls = list(dc)

*Tesla*的主页 *Tesla* | 小虾三级 | 园豆:1560
提问于:2026-03-26 21:41
< >
分享
最佳答案
0

必须是 dc.items(),不能直接用 list(dc)

1. 为什么 list(dc) 不行?

当你直接对字典使用 list() 时,Python 默认只提取字典的键(Key)。
  • 代码:ls = list(dc)
  • 结果:ls 变成了一个只包含键的列表(字符串或数字列表)。
  • 后果:
    1. 你丢失了“值”的信息,没法按值排序。
.items() 方法会将字典转换为一个包含 (键, 值) 元组 的列表。
  • 代码:ls = list(dc.items())
  • 结果:ls 变成了 [('apple', 10), ('banana', 5), ...]

  • 其实你甚至不需要显式地写 list()。因为 sorted() 函数和 list.sort() 方法都可以直接接受字典的视图对象。
    sorted_dc = sorted(dc.items(), key=lambda x: x[1], reverse=True)
    优势:
    1. 保留了完整的键值对关系。
    2. 每个元素都是一个元组 (key, value)
    3. x[1] 正好对应元组里的“值”(即 10, 5, 8),这样才能实现按值排序。

 

*Tesla* | 小虾三级 |园豆:1560 | 2026-03-26 21:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册