【发布时间】:2021-02-03 16:29:23
【问题描述】:
嗨,这听起来可能令人困惑,但我会尽力解释。 我的字典列表如下所示:
{
"1": {
"bd_date": "04/02/1977",
"name": "Deli Mirko",
"next": "04/02/2021",
"renew": 1,
"type": "birthday",
"until": 1
},
"-MScOoqCpbVxSpz56j0B": {
"bd_date": "25/11/1983",
"name": "Deli Marina",
"next": "25/11/2021",
"renew": 1,
"type": "birthday",
"until": 295
},
"-MScWwQ6-23Sdd50YoQh": {
"bd_date": "17/04/1952",
"name": "Deli Geza",
"next": "17/04/2021",
"renew": 1,
"type": "birthday",
"until": 73
}
}
我希望使用“直到”值 ASC 对此进行排序。
有没有办法做到这一点。
编辑: 我尝试了建议的解决方案,但没有得到结果,或者它改变了我的字典格式。我需要保持格式,因为其余的代码。 我试过了
new_list = sorted(old_list.items(), key=lambda i: i[1]['until'])
但它会将格式更改为从 dict 列表 - [("x",{...}), ("y",{..})...]
如何更改上述代码以保持格式 {"x": {...}, "y": {...}}
【问题讨论】:
-
“但我会尽力解释得最好” - 虽然您没有尝试解释太多,但您的要求似乎很明确。你能分享你到目前为止尝试过的代码吗?我们可以帮助您修复代码
-
看来您只需要使用
sorted()并指定适当的key。 -
您没有字典列表。您有一本带有字典值的字典。你想要什么输出数据结构?字典本质上是无序的(在大多数 Python 版本中)?
-
试试:
lst = sorted(mydicts.values(), key=lambda v: v['until']).
标签: python python-3.x list sorting dictionary