python根据字典的值对键进行排序的一种实现

tech2023-10-31  108

最近有一个需要对文本内容进行排序的需求,而文本内容均通过yaml读取,也就是说,需要通过yaml中的键的值对文本进行排序和格式化输出,这里需要一方面要考虑排序,还需要考虑值相同的情况,所以这里简单写了个分类,用来实现根据值来对键进行排序。具体实现如下:

# 根据字典中的v值, 对k进行排序 # 原理: # 1, 使用两个列表a和b, 分别保存k值和v值 # 2, 使用另外一个列表c, 对v值进行排序 # 3, 从列表c中遍历元素, 获取到元素v后, 先判断v在列表b中的下标, 然后根据下标取列表a的值, 保存到列表d, 同时将b的该下标的值设置为空 # 4, 将列表d返回, 此时的列表d即为根据v值排序顺序, 取得k的排序后的列表 class OrderDict: def __init__(self, args): self.args = args def order(self): keys = [item for item in self.args] # 获取key值 values = [self.args[item] for item in self.args] # 获取value值 sorted_values = sorted(values) # 对value值进行排序 ret = [] while len(sorted_values): value = sorted_values.pop(0) value_index = values.index(value) values[value_index] = "" ret.append(keys[value_index]) return ret data = {"hell": 123, "adsf": 456, "asdfss": 124, "asdjj": 135, "sdd": 135} a = OrderDict(data) print(a.order()) # 输出: ['hell', 'asdfss', 'asdjj', 'sdd', 'adsf']

 

最新回复(0)