首页 > 解决方案 > 按键的值(或默认值,如果缺少键)对字典列表进行排序

问题描述

想象一下,您必须按特定键的值对字典列表进行排序。请注意,某些 dicts 中可能缺少键,在这种情况下,您默认将该键的值设为 0。

样本输入

样本输出(按键“a”的值排序)

请注意,{'b': 5}它在排序顺序中排在第一位,因为它的 'a' (0) 的值最低

input.sort(key=operator.itemgetter('a'))如果所有的字典都保证有键'a',我会使用的。或者我可以将输入字典转换为collections.defaultdict然后排序。

有没有办法就地执行此操作而无需创建新的字典或更新现有的字典?可以operator.itemgetter处理丢失的钥匙吗?

标签: python

解决方案


>>> 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))

推荐阅读