2024-10-01 19:28:16 发布
网友
我想按“自然顺序”对字典的键进行排序。如果我有带钥匙的字典
d = {"key1" : object, "key11" : object, "key2" : object, "key22" : object", "jay1" : object, "jay2" : object}
我想对这本词典进行排序,结果是:
您可以将dict改为OrderedDict:
import collections, re d = {"key1" : 'object', "key11" : 'object', "key2" : 'object', "key22" : 'object', "jay1" : 'object', "jay2" : 'object'} my_fun = lambda k,v: [k, int(v)] d2 = collections.OrderedDict(sorted(d.items(), key=lambda t: my_fun(*re.match(r'([a-zA-Z]+)(\d+)',t[0]).groups()))) print(d2) #reslt: OrderedDict([('jay1', 'object'), ('jay2', 'object'), ('key1', 'object'), ('key11', 'object'), ('key2', 'object'), ('key22', 'object')])
基本上,这里发生了什么,我把字符串分成“字符串”部分和数字部分。数字部分改为int,排序使用这两个值进行。在
int
在Python中,{'a': object, 'b': object}与{}完全相同,因为字典没有顺序。在
{'a': object, 'b': object}
正如其他人所说的,字典是没有秩序的。但是,如果要按自然顺序迭代这些键,可以执行以下操作:
d = {"key1" : object, "key11" : object, "key2" : object, "key22" : object, "jay1" : object, "jay2" : object} sortedKeys = sorted(d.keys()) print sortedKeys for key in sortedKeys: print d[key]
您可以将dict改为OrderedDict:
基本上,这里发生了什么,我把字符串分成“字符串”部分和数字部分。数字部分改为
int
,排序使用这两个值进行。在在Python中,}完全相同,因为字典没有顺序。在
{'a': object, 'b': object}
与{正如其他人所说的,字典是没有秩序的。但是,如果要按自然顺序迭代这些键,可以执行以下操作:
相关问题 更多 >
编程相关推荐