Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按字典中某个键的值排序的字典列表_Python_List_Dictionary - Fatal编程技术网

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。我甚至不介意你在这里使用它。我只是想指出一些人更喜欢的另一种选择——在这里发表评论是很好的,因为人们使用这个习惯用法,如果你读过其他人使用它的代码,或者如果你决定自己更喜欢它,那么知道它的作用是很好的。