我正在使用对其键同时包含字符串和数字OrderedDict
的 a 进行排序。dict
这是我的代码:
from collections import OrderedDict
x = {}
x['mon'] = 10
x['day_1'] = 1
x['day_2'] = 2
x['day_10'] = 10
x['day_11'] = 11
dictionary1 = OrderedDict(sorted(x.items(), key=lambda t: len(t[0])))
dictionary2 = OrderedDict(sorted(x.items(), key=lambda t: t[0]))
我希望输出看起来像(我不在乎 的位置mon:2
):
OrderedDict([('mon', 2), ('day_1', 1), ('day_2', 2), ('day_10', 10), ('day_11', 11)])
但两种方法都没有奏效。所以我想我可能需要自定义排序规则?有什么建议么?
更新:
这是我的综合答案(Simeon Visser 和 hcwhsa):
def convert_dict_key(key):
try:
return int(key.split('_')[1])
except:
return key
alphanum_key = lambda (key, value): convert_dict_key(key)
dictionary = sorted(dictionary.items(), key=alphanum_key)