Python3-如何使用dict中的特定字段对带有键的字典列表进行排序
嗨,这听起来可能让人困惑,但我会尽我所能解释清楚。 我的词典列表如下所示:Python3-如何使用dict中的特定字段对带有键的字典列表进行排序,python,python-3.x,list,sorting,dictionary,Python,Python 3.x,List,Sorting,Dictionary,嗨,这听起来可能让人困惑,但我会尽我所能解释清楚。 我的词典列表如下所示: { "1": { "bd_date": "04/02/1977", "name": "Deli Mirko", "next": "04/02/2021", "renew": 1, "typ
{
"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对其进行排序
有没有办法做到这一点
编辑:
我尝试了建议的解决方案,但没有得到结果,或者它改变了我的字典格式。我需要保持格式,因为剩下的代码。
我试过了
但它将格式从dict改为list-[((“x”,{…}),(“y”,{…})…]
如何更改上述代码以保持格式{“x”:{…},“y”:{…}您只需使用sorted并指定要排序的子键,如下所示 我还应该指出,在本文中,我认为您不是指Python列表,尽管您只是指您有一个字典对象,并且您希望迭代它们:
unsorted_dictionary = {
"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
}
}
sorted_dictionary = sorted(unsorted_dictionary.items(), key=lambda item: item[1]['until'])
print(sorted_dictionary)
# [('1', {'bd_date': '04/02/1977', 'name': 'Deli Mirko', 'next': '04/02/2021', 'renew': 1, 'type': 'birthday', 'until': 1}), ('-MScWwQ6-23Sdd50YoQh', {'bd_date': '17/04/1952', 'name': 'Deli Geza', 'next': '17/04/2021', 'renew': 1, 'type': 'birthday', 'until': 73}), ('-MScOoqCpbVxSpz56j0B', {'bd_date': '25/11/1983', 'name': 'Deli Marina', 'next': '25/11/2021', 'renew': 1, 'type': 'birthday', 'until': 295})]
for item in sorted_dictionary:
print(item)
# ('1', {'bd_date': '04/02/1977', 'name': 'Deli Mirko', 'next': '04/02/2021', 'renew': 1, 'type': 'birthday', 'until': 1})
# ('-MScWwQ6-23Sdd50YoQh', {'bd_date': '17/04/1952', 'name': 'Deli Geza', 'next': '17/04/2021', 'renew': 1, 'type': 'birthday', 'until': 73})
# ('-MScOoqCpbVxSpz56j0B', {'bd_date': '25/11/1983', 'name': 'Deli Marina', 'next': '25/11/2021', 'renew': 1, 'type': 'birthday', 'until': 295})
字典是无序的。这不是一个清单。那是字典中的字典。您可以做的是,您可以有序地将这些词典项复制到列表中。“但我会尽力解释得最好”-虽然您没有解释太多,但您的要求似乎很明确。你能分享你到目前为止试过的代码吗?我们可以帮助您修复代码这是否回答了您的问题?似乎您只需要使用
sorted()
并指定适当的键即可。您没有字典列表。您有一个带有字典值的字典。您想要什么样的输出数据结构?字典本质上是无序的(在大多数Python版本中)?请尝试:lst=sorted(mydicts.values(),key=lambda v:v['until'])
。
unsorted_dictionary = {
"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
}
}
sorted_dictionary = sorted(unsorted_dictionary.items(), key=lambda item: item[1]['until'])
print(sorted_dictionary)
# [('1', {'bd_date': '04/02/1977', 'name': 'Deli Mirko', 'next': '04/02/2021', 'renew': 1, 'type': 'birthday', 'until': 1}), ('-MScWwQ6-23Sdd50YoQh', {'bd_date': '17/04/1952', 'name': 'Deli Geza', 'next': '17/04/2021', 'renew': 1, 'type': 'birthday', 'until': 73}), ('-MScOoqCpbVxSpz56j0B', {'bd_date': '25/11/1983', 'name': 'Deli Marina', 'next': '25/11/2021', 'renew': 1, 'type': 'birthday', 'until': 295})]
for item in sorted_dictionary:
print(item)
# ('1', {'bd_date': '04/02/1977', 'name': 'Deli Mirko', 'next': '04/02/2021', 'renew': 1, 'type': 'birthday', 'until': 1})
# ('-MScWwQ6-23Sdd50YoQh', {'bd_date': '17/04/1952', 'name': 'Deli Geza', 'next': '17/04/2021', 'renew': 1, 'type': 'birthday', 'until': 73})
# ('-MScOoqCpbVxSpz56j0B', {'bd_date': '25/11/1983', 'name': 'Deli Marina', 'next': '25/11/2021', 'renew': 1, 'type': 'birthday', 'until': 295})