按嵌套键对字典进行排序

Shi*_*ini 0 python dictionary

考虑以下形式的字典:

dic = {
    "First": {
        3: "Three"
    },
    "Second": {
        1: "One"
    },
    "Third": {
        2:"Two"
    }
}
Run Code Online (Sandbox Code Playgroud)

我想按嵌套的 dic 键对其进行排序 (3, 1, 2)

我尝试以下列方式使用 lambda 函数,但它返回“KeyError: 0”

dic = sorted(dic.items(), key=lambda x: x[1][0])

预期输出将是:

{
    "Second": {
        1: "One"
    },
    "Third": {
        2: "Two"
    },
    "First": {
        3:"Three"
    }
}
Run Code Online (Sandbox Code Playgroud)

本质上,我想知道的是如何独立于主字典键指定嵌套键。

Joh*_*man 5

在lambda函数中,x是键值对,x[1]是值,它本身就是一个字典。x[1].keys()是它的键,但如果你想通过它的索引获得它的唯一一项,它需要变成一个列表。因此:

sorted(dic.items(), key = lambda x: list(x[1].keys())[0])
Run Code Online (Sandbox Code Playgroud)

其评估为:

[('Second', {1: 'One'}), ('Third', {2: 'Two'}), ('First', {3: 'Three'})]
Run Code Online (Sandbox Code Playgroud)