本帖最后由 hrp 于 2021-2-27 12:06 编辑
snowzkr 发表于 2021-2-27 00:57
谢谢 不过感觉结果不太对 希望得到的结果是下面这样. _k的key要在_b前面比较头疼
{‘1_a': 123, '2_a’ ...
键的数字是按升序排序,但是字母部分既不是升序也不是降序排列,你也没给排序规则或者算法,只能自定义一个顺序表去排序了。
# coding: utf-8
import re
sample = {'1_a': 123, '1_b': 456, '1_k': 789, '2_a': 12, '2_b': 34, '2_k': 56, '3_a': 78, '3_b':90, '3_k': 1}
# 自定义顺序, 可根据需要进行更改
order = 'a', 'k', 'b'
def sortkey(s):
s = s[0]
lto = re.search(r'_([a-z]+)$', s)
if not lto:
return s[::-1]
lt = lto.group(1)
if lt in order:
return s.replace(lto.group(0), str(order.index(lt)))[::-1]
return s[::-1]
sample = dict(sorted(sample.items(), key=sortkey))
print(sample)
|