如何首先根据字典的单位(bit/s、Kbit/s 等)对特定的字典列表进行排序,然后根据它们的值对它们进行排序
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"}
]
试图实现的输出应该是这样的,带有排序值:-
my_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'}
]
回答
单向使用humanfriendly.parse_size:
from humanfriendly import parse_size
sorted(my_lst, key=lambda x: parse_size(x["usage"]), reverse=True)
输出:
[{'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'}]
THE END
二维码