考虑以下形式的字典:
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)
本质上,我想知道的是如何独立于主字典键指定嵌套键。
在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)