python - 按键的值(或默认值,如果缺少键)对字典列表进行排序
问题描述
想象一下,您必须按特定键的值对字典列表进行排序。请注意,某些 dicts 中可能缺少键,在这种情况下,您默认将该键的值设为 0。
样本输入
- 输入 =
[{'a': 1, 'b': 2}, {'a': 10, 'b': 3}, {'b': 5}]
样本输出(按键“a”的值排序)
[{'b': 5}, {'a': 1, 'b': 2}, {'a': 10, 'b': 3}]
请注意,{'b': 5}
它在排序顺序中排在第一位,因为它的 'a' (0) 的值最低
input.sort(key=operator.itemgetter('a'))
如果所有的字典都保证有键'a',我会使用的。或者我可以将输入字典转换为collections.defaultdict
然后排序。
有没有办法就地执行此操作而无需创建新的字典或更新现有的字典?可以operator.itemgetter
处理丢失的钥匙吗?
解决方案
>>> items = [{'a': 1, 'b': 2}, {'a': 10, 'b': 3}, {'b': 5}]
>>> sorted(items, key=lambda d: d.get('a', 0))
[{'b': 5}, {'a': 1, 'b': 2}, {'a': 10, 'b': 3}]
或者就地更新现有字典
items.sort(key=lambda d: d.get('a', 0))
推荐阅读
- c# - 使用 iTextSharp 将多个 TIFF 图像转换为 PDF
- react-native - keyPrefix reduxPersist: 已经在使用中
- reactjs - 如何生成附加到 TextField 的列表?
- docker - 在使用服务端口运行 docker compose 之后 Docker compose exec
- java - 如何在应用更新中实现“立即”?
- javascript - 如何在 Visual Studio 中的两个项目之间共享代码
- python - 如何在 python 中使用正则表达式从 utf-8 中仅提取表情符号?
- javascript - Cloudinary\Error:缺少必需的参数 - 文件
- java - 继承一组注释和一组方法的最佳方式?
- azure - azure 上的跨子域 cookie