Python 按字典中某个键的值排序的字典列表
Python 按字典中某个键的值排序的字典列表,python,list,dictionary,Python,List,Dictionary,a=[{'post':3,'value':42},{'post':4,'value':12},{'post':12,'value':25}] 如何将其排序为: a=[{'post':3,'value':42},{'post':12,'value':25},{'post':4,'value':12}] 我的意思是为了使用reverse进行赋值。您可以使用键和reverse参数: a=[{'post': 3, 'value': 42}, {'post': 4, 'value': 12}, {'pos
a=[{'post':3,'value':42},{'post':4,'value':12},{'post':12,'value':25}]
如何将其排序为:
a=[{'post':3,'value':42},{'post':12,'value':25},{'post':4,'value':12}]
我的意思是为了使用reverse进行赋值。您可以使用
键
和reverse
参数:
a=[{'post': 3, 'value': 42}, {'post': 4, 'value': 12}, {'post': 12, 'value': 25}]
a.sort(key=lambda d: -d['value'])
result = sorted(a, key=lambda d:d["value"], reverse=True)
键
必须是一个函数,给定列表中的一个元素,该函数返回一个应进行排序的值。在这种情况下,传递的函数是一个匿名函数,给定字典,该函数返回与键“value”
关联的值
请注意,sorted(x)
返回列表的排序副本。如果您想在原地对列表进行排序,只需调用传递相同参数的列表对象的方法sort
。还要注意,x=sorted(x)
并不等同于x.sort()
希望这仍然被认为是合理的Python,即使它包含丑陋的“lambda”怪物…:-) 您可以使用
键
和反向
参数:
result = sorted(a, key=lambda d:d["value"], reverse=True)
键
必须是一个函数,给定列表中的一个元素,该函数返回一个应进行排序的值。在这种情况下,传递的函数是一个匿名函数,给定字典,该函数返回与键“value”
关联的值
请注意,sorted(x)
返回列表的排序副本。如果您想在原地对列表进行排序,只需调用传递相同参数的列表对象的方法sort
。还要注意,x=sorted(x)
并不等同于x.sort()
希望这仍然被认为是合理的Python,即使它包含丑陋的“lambda”怪物…:-) 这是另一个列表。我想他要求对同一个列表进行排序。
operator.itemgetter('value')
可能会比lambda稍快一点(如果有关系的话)@MarcodeWit:他在“before”和“after”中使用了相同的变量。因此,可能是他/她想对列表进行排序,或者可能是他/她想进行排序(…)。我要补充一点说明。@mgilson:我们来看看lambda bashing:-)。。。但是,请清楚地说明您的厌恶(例如,“扁平比嵌套更好,一直到COBOL而不计算”),不要使用性能借口。如果这种加速水平很重要的话,那么最有可能的是Python首先是一个值得怀疑的选择。@6502--我非常高兴在很多情况下使用lambda。我甚至不介意你在这里使用它。我只是想指出一些人更喜欢的另一种选择——在这里发表评论是很好的,因为人们使用这个习惯用法,如果你读过其他人使用它的代码,或者你决定自己更喜欢它,那么知道它的作用是很好的。下面是另一个列表。我想他要求对同一个列表进行排序。operator.itemgetter('value')
可能会比lambda稍快一点(如果有关系的话)@MarcodeWit:他在“before”和“after”中使用了相同的变量。因此,可能是他/她想对列表进行排序,或者可能是他/她想进行排序(…)。我要补充一点说明。@mgilson:我们来看看lambda bashing:-)。。。但是,请清楚地说明您的厌恶(例如,“扁平比嵌套更好,一直到COBOL而不计算”),不要使用性能借口。如果这种加速水平很重要的话,那么最有可能的是Python首先是一个值得怀疑的选择。@6502--我非常高兴在很多情况下使用lambda。我甚至不介意你在这里使用它。我只是想指出一些人更喜欢的另一种选择——在这里发表评论是很好的,因为人们使用这个习惯用法,如果你读过其他人使用它的代码,或者如果你决定自己更喜欢它,那么知道它的作用是很好的。