如何首先根据字典的单位(bit/s、Kbit/s 等)对特定的字典列表进行排序,然后根据它们的值对它们进行排序

Sun*_*dav 2 python sorting dictionary list prometheus

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"}
    ]
Run Code Online (Sandbox Code Playgroud)

试图实现的输出应该是这样的,带有排序值:-

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'}
]
Run Code Online (Sandbox Code Playgroud)

Chr*_*ris 5

单向使用humanfriendly.parse_size

from humanfriendly import parse_size

sorted(my_lst, key=lambda x: parse_size(x["usage"]), reverse=True)
Run Code Online (Sandbox Code Playgroud)

输出:

[{'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'}]
Run Code Online (Sandbox Code Playgroud)