直接上程序,
dct = {
"y0": 1,
"y11": 1,
"y1": 1,
"y2": 1,
}
for k in sorted(dct.keys()):
print(k)
输出,
y0
y1
y11
y2
期望输出:
y0
y1
y2
y11
怎么才能实现期望的输出?
先看最终程序,
import re
dct = {
"y0": 1,
"y1": 1,
"y11": 1,
"y2": 1,
}
for k in sorted(dct.keys(), key=lambda x: (re.sub(r"[0-9]", "", x), int(re.sub(r"[a-z]", "", x)))):
print(k)
上面程序怎么做到的呢?
总的思路是先把字典中的 key
拆成两部分,字母和数字,然后先按照字母排序,如果字母相同再按照数字排序...
网友评论