相关疑难解决方法(0)

按第二项(整数值)对元组列表进行排序

我有一个类似于下面的元组列表:

[('abc', 121),('abc', 231),('abc', 148), ('abc',221)]
Run Code Online (Sandbox Code Playgroud)

我想按元组内的整数值按升序对此列表进行排序.可能吗?

python tuples list

370
推荐指数
8
解决办法
34万
查看次数

基于第二个参数对元组进行排序

我有一个类似于下面的元组列表:

("Person 1",10)
("Person 2",8)
("Person 3",12)
("Person 4",20)
Run Code Online (Sandbox Code Playgroud)

我想要产生的是按元组的第二个值按升序排序的列表.所以L [0]应该("Person 2", 8)在排序之后.

我怎样才能做到这一点?使用Python 3.2.2如果有帮助.

python sorting tuples

84
推荐指数
2
解决办法
9万
查看次数

operator.itemgetter和sort()如何在Python中工作?

我有以下代码:

# initialize
a = []

# create the table (name, age, job)
a.append(["Nick", 30, "Doctor"])
a.append(["John",  8, "Student"])
a.append(["Paul", 22, "Car Dealer"])
a.append(["Mark", 66, "Retired"])    

# sort the table by age
import operator
a.sort(key=operator.itemgetter(1))    

# print the table
print(a)
Run Code Online (Sandbox Code Playgroud)

它创建一个4x3表,然后按年龄对其进行排序.我的问题是,到底是key=operator.itemgetter(1)做什么的?该operator.itemgetter函数是否返回项目的值?为什么我不能只输入那样的东西key=a[x][1]?或者我可以吗?与运营商怎么能打印等形式的一定值3x222

  1. Python如何对表进行排序?我可以反向排序吗?

  2. 如何根据第一个年龄段的两列对其进行排序,然后如果年龄与b名称相同?

  3. 我怎么能不这样做operator

python sorting operator-keyword

53
推荐指数
3
解决办法
12万
查看次数

按第二个值排序元组列表,reverse = True,然后按键,reverse = False

我需要首先对字典进行排序,使用值进行排序reverse=True,对于重复值,按键排序,reverse=False

到目前为止,我有这个

dict = [('B', 3), ('A', 2), ('A', 1), ('I', 1), ('J', 1)]
sorted(dict.items(), key=lambda x: (x[1],x[1]), reverse=True)
Run Code Online (Sandbox Code Playgroud)

返回......

[('B', 3), ('A', 2), ('J', 1), ('I', 1), ('A', 1)]
Run Code Online (Sandbox Code Playgroud)

但我需要它:

[('B', 3), ('A', 2), ('A', 1), ('I', 1), ('J', 1)]
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,当值相等时,我只能按指定的方式对键进行排序......但是如何让它们以越来越多的方式排序呢?

python sorting reverse dictionary

28
推荐指数
2
解决办法
4万
查看次数

operator.itemgetter或lambda

我很好奇是否有任何关于哪个operator.itemgetter(0)或哪个lambda x:x[0]更好用的指示,特别是sorted()作为key关键字参数,因为这是首先考虑的用途.有任何已知的性能差异吗?是否有任何与PEP相关的偏好或指导?

python python-2.7 python-3.x

26
推荐指数
3
解决办法
5442
查看次数

python:按子列表中的项目对列表进行排序

我有一个包含用户和分数的列表列表,如下所示:

[["user1", 100], ["user2", 234], ["user3", 131]...]
Run Code Online (Sandbox Code Playgroud)

我想生成一个列表,按递减顺序按分数对用户进行排序:

[["user2", 234], ["user3", 131], ["user1", 100]...]
Run Code Online (Sandbox Code Playgroud)

我怎么可能这样做呢?

python sorting list

14
推荐指数
4
解决办法
2万
查看次数

在Python中对列表进行排序

c2=[]
row1=[1,22,53]
row2=[14,25,46]
row3=[7,8,9]

c2.append(row2)
c2.append(row1)
c2.append(row3)
Run Code Online (Sandbox Code Playgroud)

c2 就是现在:

[[14, 25, 46], [1, 22, 53], [7, 8, 9]]
Run Code Online (Sandbox Code Playgroud)

我如何c2以这样的方式排序,例如:

for row in c2:

sort on row[2]
Run Code Online (Sandbox Code Playgroud)

结果将是:

[[7,8,9],[14,25,46],[1,22,53]]
Run Code Online (Sandbox Code Playgroud)

另一个问题是我如何首先按行排序[2]并在行集[1]内排序

python sorting list

9
推荐指数
1
解决办法
2万
查看次数

从键值对的元组列表中获取具有最少计数的项的键 - Python

输入是未排序的元组列表:

x = [('herr', 1),
     ('dapao', 1),
     ('cino', 1),
     ('o', 38),
     ('tiao', 2),
     ('tut', 1),
     ('poh', 6),
     ('micheal', 1),
     ('orh', 1),
     ('horlick', 3),
     ('si', 1),
     ('tai', 1),
     ('titlo', 1),
     ('siew', 17),
     ('da', 1),
     ('halia', 2)]
Run Code Online (Sandbox Code Playgroud)

目标是找到n计数最少的最后一个键,即所需的输出:

['orh', 'si', 'tai', 'titlo', 'da']
Run Code Online (Sandbox Code Playgroud)

我试过这样做:

  • 首先将元组列表转换为字典
  • 将字典投入计数器
  • 然后[-n:]从中找到元组列表Counter.most_common()
  • 将元组列表从[-n:]dict转换为dict
  • 获取密钥,然后将其转换为列表

n = 5
list(dict(Counter(dict(x)).most_common()[-n:]).keys())
Run Code Online (Sandbox Code Playgroud)

是否有一种不太复杂的方式来获得相同的输出?


我也可以这样做:

from operator import itemgetter
output, *_ = zip(*sorted(x, key=itemgetter(1))[n:])
list(output)
Run Code Online (Sandbox Code Playgroud)

但现在我已经只是换出Counter.most_commonsorteditemgetter.然后我仍然需要zip(*list)通过从zip后的每个元组列表中解压缩第一个值来提取密钥. …

python counter dictionary list

7
推荐指数
2
解决办法
421
查看次数

如何先减少值,然后增加第二个值

我想说:

student_tuples = [ ('john', 'A', 15),
                   ('peter', 'B', 12),
                   ('dave', 'C', 12)]
Run Code Online (Sandbox Code Playgroud)

我如何将它排序为这样:

student_tuples = [('john', 'A', 15), ('dave', 'C', 12), ('peter', 'B', 12)]
Run Code Online (Sandbox Code Playgroud)

我能想到的是:

from operator import itemgetter

sorted(student_tuples, key=itemgetter(2,0), reverse=True)
Run Code Online (Sandbox Code Playgroud)

但是输出将是:

student_tuples = [('john', 'A', 15), ('peter', 'B', 12), ('dave', 'C', 12)]
Run Code Online (Sandbox Code Playgroud)

那不是我想要的.我怎样才能使用itemgetter或其他更简单的方法呢?

python sorting

6
推荐指数
2
解决办法
2336
查看次数

Python:按“列”对列表进行排序

如何按“列”对列表列表进行排序,即按每个列表的第 i 个元素对列表进行排序?

例如:

a=[['abc',5],
   ['xyz',2]]

print sortByColumn(a,0)

[['abc',5],
 ['xyz',2]]

print sortByColumn(a,1)

[['xyz',2],
 ['abc',5]]
Run Code Online (Sandbox Code Playgroud)

python sorting

5
推荐指数
1
解决办法
5162
查看次数