考虑使用sorted函数。使用this作为引用。对于这种情况,必须使用一个key函数来告诉python如何比较问题中字典的两个实体。然后,sorted函数返回一个您要迭代的列表。在
例如>>>sorted(student_tuples, key=lambda student: student[2]) # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
对于你的案子,你需要从口述中得到项目
编辑:
首先,正如其中一条评论所说,在python中不能直接对dict进行排序。我不认为你需要的是有条理的口述。只能对已转换为列表元组的dict进行排序。例如{'a':'b','c':'d'},必须先转换为[('a','b'),('c','d')],然后您可以选择按您的意愿排序。这里的问题是一旦你这样做了,你就不能将它存储回一个正常的dict中,原因是正常dict的工作方式不是这样的。您可以在python集合中使用ordereddict,它“记住”插入的顺序,因此是一个“排序”dict,但是如果不做一些工作,就不能轻松地创建“排序”dict
对于您的输入,我的示例中的“b”是一个dict,因此您必须做一些工作来获得所需的密钥。我假设你想在每个'INT-ABC'的'acc'值之间排序。在
^{pr2}$
鉴于此>>> from collections import OrderedDict
>>> t = OrderedDict()
>>> k_dict.items()[0][0]
'INT-ABC1'
>>> t[k_dict.items()[0][0]] = sorted(k_dict.items()[0][1].items(), key=lambda x: x[1]['val'])
>>> t
OrderedDict([('INT-ABC1', [('acc1', {'Qua': -241.0, 'val': -22313.7381693064}), ('acc2', {'Qua': -13.0, 'val': -1312.940854148})])])