如何对含bit/s类带宽单位的字典列表先按单位再按数值排序
实现思路
- 首先定义单位和对应比特量级的映射字典,将不同单位统一转换为以bit为基准的数值,方便直接比较大小
- 对列表每个元素的
usage字段做拆分,提取数值部分和单位部分 - 以转换后的统一比特数值为排序依据,做降序排序即可得到目标结果
可直接运行的代码实现
# 原始列表 my_lst = [ {"usage": "0.59 Kbit/s"}, {"usage": "383.34 bit/s"}, {"usage": "158.13 bit/s"}, {"usage": "4.15 Gbit/s"}, {"usage": "18.5 Mbit/s"}, {"usage": "45 Kbit/s"} ] # 定义单位对应的比特量级,数值越大代表单位量级越高 unit_map = { 'bit/s': 1, 'Kbit/s': 10 ** 3, 'Mbit/s': 10 ** 6, 'Gbit/s': 10 ** 9 } # 自定义排序逻辑 def sort_key(item): value_str, unit = item['usage'].split() value = float(value_str) # 返回统一转换为bit后的值用于排序 return value * unit_map[unit] # 执行排序,reverse=True代表从大到小排序 sorted_lst = sorted(my_lst, key=sort_key, reverse=True) # 输出结果验证 print(sorted_lst)
运行输出结果
[{'usage': '4.15 Gbit/s'}, {'usage': '18.5 Mbit/s'}, {'usage': '45 Kbit/s'}, {'usage': '0.59 Kbit/s'}, {'usage': '383.34 bit/s'}, {'usage': '158.13 bit/s'}]
内容的提问来源于stack exchange,提问作者Sunny Yadav
相关产品推荐
相关产品推荐

