对键不一致的字典列表进行排序



我想对一个字典列表进行排序。问题是字典中的键是不相同的,但每个字典肯定只有一个项。例如:[{'foo':39}, {'bar':7}, {'spam':35}, {'buzz':4}]这里,键是人的名字,值是年龄。我希望结果是[{'buzz': 4}, {'bar': 7}, {'spam': 35}, {'foo': 39}]我正在做的是:

def get_val(d):
for k, v in d.items():
return v
sorted_lst = sorted(lst, key=lambda d: get_val(d))

有更好的解决方案吗?

可以在lambda中使用dict的值,如下所示:

>>> lst_dct = [{'foo':39}, {'bar':7}, {'spam':35}, {'buzz':4}]
>>> sorted(lst_dct, key=lambda x: list(x.values()))
[{'buzz': 4}, {'bar': 7}, {'spam': 35}, {'foo': 39}]

你可以扩展到包含多个元素的use list:

>>> lst_dct = [{'foo':[39, 40]}, {'bar':[7,8]}, {'spam':[4,5]}, {'buzz':[4,6]}]
>>> sorted(lst_dct, key=lambda x: sorted(x.values()))
[{'spam': [4, 5]}, {'buzz': [4, 6]}, {'bar': [7, 8]}, {'foo': [39, 40]}]

相关内容

  • 没有找到相关文章

最新更新