在Python中对字典的列表进行排序
列表是 Python 中的一个线性集合对象,它可以通过在一个特定的索引上存储每个元素来模拟数组。列表也可以存储其他对象,如包含键值对的字典。
本教程说明了如何在Python中对一个字典列表进行排序。
使用sorted()
函数对 Python 中的字典列表进行排序
这个函数接收一个现有的列表并返回一个排序的列表。它可以按升序或降序对列表进行排序。我们还可以指定一个key
参数,该参数提供一个函数来决定元素的顺序。
我们可以通过使用sorted()
函数对字典列表进行排序来获得优势。然而,使用比较运算符来比较字典实例并不简单,我们需要使用key
参数。
我们可以根据key
‘的值对列表进行排序。这样做的另一个条件是该key
在列表中的所有字典中是通用的。
现在让我们来看看这个例子。
lst = [{'n':1},{'n':4},{'n':2}]
print(sorted(lst,key=lambda d: d['n']))
输出:
[{'n': 1}, {'n': 2}, {'n': 4}]
上面的例子中,有一些具有相同键的字典,n
,我们根据这个键的值进行排序。我们用sorted()
函数的参数key
指定了一个lambda
函数。
这个单行函数告诉参数要考虑与这个key
相关的值来排序。我们还可以用operator.itemgetter()
函数来代替lambda
函数。
我们可以用这个函数从字典中取值,并使用它进行比较。请看下面的代码。
import operator
lst = [{'n':1},{'n':4},{'n':2}]
print(sorted(lst,key=operator.itemgetter('n')))
输出:
[{'n': 1}, {'n': 2}, {'n': 4}]
我们还可以使用reverse
参数,并将其设置为True
,对列表进行降序排序。例如,请看下面的代码栅栏。
import operator
lst = [{'n':1},{'n':4},{'n':2}]
print(sorted(lst,key=operator.itemgetter('n'),reverse = True))
输出结果:
[{'n': 4}, {'n': 2}, {'n': 1}]
上面的例子显示,列表已按降序排序。
使用sort()
函数对 Python 中的字典列表进行排序
sort()
函数的工作原理与sorted
方法类似,用于对列表进行排序。主要的区别是sort()
函数改变了原始列表的顺序,而后者则是创建一个新的列表。
我们可以按照使用sorted
函数的方式使用operator.itemgetter()
和lambda
函数来使用sort()
方法。
我们将像在前面的例子中那样使用key
参数。我们还可以使用reverse
参数来对列表进行降序排序。
请看下面的代码。
import operator
lst1 = [{'n':1},{'n':4},{'n':2}]
lst2 = [{'n':5},{'n':1},{'n':3}]
lst1.sort(key=lambda d:d['n'])
lst2.sort(key=operator.itemgetter('n'),reverse = True)
print(lst1,lst2)
输出结果:
[{'n': 1}, {'n': 2}, {'n': 4}] [{'n': 5}, {'n': 3}, {'n': 1}]
上面的例子显示,原来的列表已经被修改,并按照所需的key
进行排序。
第一个列表使用了lambda
函数。第二个使用了operator.itemgetter
方法,并通过reverse
参数对列表进行降序排序。
因此,我们有两种方法在 Python 中对字典列表进行排序。首先,它使用了sorted
和sort
函数。为了给一个字典列表排序,我们使用所有字典中一个共同的key
的值。
我们创建一个函数来返回这个值,并在两个函数中用key
参数指定它。我们为此讨论了lambda
和operator.itemgetter
方法。
为了得到降序的结果,我们可以使用reverse
参数,并将其设置为True
。好极了!你已经成功地学会了如何在 Python 中对一个字典列表进行排序。