我有一个包含字母数字键的字典,我需要根据键的数值增加顺序对它们进行排序。这是我的字典
output_filters = {"filter22": "red", "filter13": "green", "filter36": "yellow"}
我想要将最终字典排序如下
output_filters = {"filter13": "green", "filter22": "red", "filter36": "yellow"}
现在我知道有类似的stackoverflow问题,但我无法适应我的情况。
这是我到目前为止所做的,但它不起作用
def key_func(s):
return [int(x) if x.isdigit() else x for x in re.findall(r'\D+|\d+', s)]
sorted_keys = sorted(output_filters, key=key_func)
它给出了不准确的结果。如何做到这一点?
答案 0 :(得分:2)
以下内容将为您提供已排序的List
个键。
x = [k for k, v in output_filters.items()]
x = sorted(x, key=lambda x: int(x[6:])) # this will remove "filter" prefix
# ['filter13', 'filter22', 'filter36']
但是,您无法对字典进行排序。它们是无序的。如果您确实需要对其进行排序,则需要使用OrderedDict
。
https://docs.python.org/2/library/collections.html#collections.OrderedDict