有一个列表嵌套字典:[{"a": 5}, {"b": 4}, {"c": 1},{"e": 2}, {"d": 3}], 他们的值是不一样的, 现在要根据值进行排序:
思路:对于值排序,首先把字典中的值取出来, 把使这个值所在的字典和比它小的换位置这样就可以根据值进行排序
根据不同的键进行排序也是一样的。
具体代码实现
1 # 定义方法取出字典中的值 2 def get_val(_dict): 3 val = list(_dict.values())[0] # 根据值进行排序:将.values()改为.keys()就ok了 4 return val 5 6 7 # 定义排序规则 8 def boff_sort(_list): 9 n = len(_list) 10 for i in range(n-1): 11 for j in range(n-1-i): 12 if get_val(_list[j]) > get_val(_list[j+1]): # 那到字典中的值进行排序 13 _list[j], _list[j+1] = _list[j+1], _list[j] 14 15 16 if __name__ == '__main__': 17 li = [{"a": 5}, {"b": 4}, {"c": 1},{"e": 2}, {"d": 3}] 18 boff_sort(li) 19 print(li) 20 # 运行结果为[{'c': 1}, {'e': 2}, {'d': 3}, {'b': 4}, {'a': 5}]
对相同的键进行排序的时候很简单 使用lambda函数就可以搞定。