2024-04-19 19:32:42 发布
网友
我有一个看起来像这样的元组列表:
[('abc', 121),('abc', 231),('abc', 148), ('abc',221)]
我想按元组内的整数值按升序排列这个列表。有可能吗?
加上契肯的回答, 这就是如何按降序中的第二项对元组列表进行排序的方法。
sorted([('abc', 121),('abc', 231),('abc', 148), ('abc',221)],key=lambda x: x[1], reverse=True)
>>> from operator import itemgetter >>> data = [('abc', 121),('abc', 231),('abc', 148), ('abc',221)] >>> sorted(data,key=itemgetter(1)) [('abc', 121), ('abc', 148), ('abc', 221), ('abc', 231)]
在这种情况下,IMO使用itemgetter比@cheeken的解决方案更具可读性。它是 因为几乎所有的计算都是在c端完成的(不是双关语),而不是通过使用lambda。
itemgetter
c
lambda
>python -m timeit -s "from operator import itemgetter; data = [('abc', 121),('abc', 231),('abc', 148), ('abc',221)]" "sorted(data,key=itemgetter(1))" 1000000 loops, best of 3: 1.22 usec per loop >python -m timeit -s "data = [('abc', 121),('abc', 231),('abc', 148), ('abc',221)]" "sorted(data,key=lambda x: x[1])" 1000000 loops, best of 3: 1.4 usec per loop
尝试将key关键字与sorted()一起使用。
key
sorted()
sorted([('abc', 121),('abc', 231),('abc', 148), ('abc',221)], key=lambda x: x[1])
key应该是一个函数,用于标识如何从数据结构中检索可比较元素。在您的例子中,它是元组的第二个元素,因此我们访问[1]。
[1]
有关优化,请参见jamylak使用itemgetter(1)的响应,这实际上是lambda x: x[1]的更快版本。
itemgetter(1)
lambda x: x[1]
加上契肯的回答, 这就是如何按降序中的第二项对元组列表进行排序的方法。
在这种情况下,IMO使用
itemgetter
比@cheeken的解决方案更具可读性。它是 因为几乎所有的计算都是在c
端完成的(不是双关语),而不是通过使用lambda
。尝试将
key
关键字与sorted()
一起使用。key
应该是一个函数,用于标识如何从数据结构中检索可比较元素。在您的例子中,它是元组的第二个元素,因此我们访问[1]
。有关优化,请参见jamylak使用
itemgetter(1)
的响应,这实际上是lambda x: x[1]
的更快版本。相关问题 更多 >
编程相关推荐