在不知道关键字/值的情况下对字典列表进行排序



我的代码中的一个函数(F1(返回字典列表。我需要把这份字典清单整理一下,然后打印出来。只要它们是一致的,我们是按升序还是降序对列表进行排序都无关紧要。问题是,F1每次都可能返回一个完全不同的字典列表:长度、键、值,所有内容都可能不同,而我无法提前知道。

如何安全、一致地对这样的列表进行排序?我有这个:

sorted_list = sorted(list_to_be_sorted, key=lambda k: k['name'])

但这在我的情况下不起作用,因为我可能有一个不包含"名称"的列表。

假设所有密钥都相同,这可能就是您所需要的:

list_to_be_sorted = [{"name": 3}, {"name": 2}, {"name": 4}, {"name": 1}]
sorted_list = sorted(list_to_be_sorted, key=lambda k: k[[*k][0]])

输出:

[{'name': 1}, {'name': 2}, {'name': 3}, {'name': 4}]

一种解决方案是使用dict.get。如果字典中不存在密钥,则返回None(或其他默认值,如果需要(:

sorted_list = sorted(list_to_be_sorted, key=lambda k: k.get('name'))

最新更新