根据字母数字键

时间:2018-03-29 18:27:54

标签: python-3.x sorting dictionary

我有一个包含字母数字键的字典,我需要根据键的数值增加顺序对它们进行排序。这是我的字典

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)

它给出了不准确的结果。如何做到这一点?

1 个答案:

答案 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