gpt4 book ai didi

python - 如何从嵌套列表中仅获取前 5 名和后 5 名列表?

转载 作者:行者123 更新时间:2023-11-28 21:54:03 24 4
gpt4 key购买 nike

没错,我正在处理一个列表中有一堆列表的文件。我正在尝试按参与者总数排名前 5 位的州和排名后 5 位的州来排列它们。

import csv
from operator import itemgetter #not really using this right now
crimefile = open('APExam.txt', 'r')
reader = csv.reader(crimefile)
allRows = [row for row in reader]
L = sorted(allRows,key=lambda x: x[1])
for item in L:
print item[0],','.join(map(str,item[1:]))

它打印出这样的东西:

State  Total #,% passed,%female
Wyoming 0,0,0
New Hampshire 101,76,12
Utah 103,54,4
Mass 1067,67,18
Montana 11,55,0
Iowa 118,80,9
Alabama 126,79,17
Georgia 1261,51,18
Florida 1521,44,20
Illinois 1559,69,13
New Jersey 1582,74,15
Maine 161,67,16

这会以接近我正在寻找的方式打印文件,但参与者总数并未按从大到小排序;它是通过查看第一个元素来排序的。如何将其更改为更像:

New Jersey 1582,74,15
Illinois 1559,69,13
Florida 1521,44,20
Georgia 1261,51,18
Etc...

第一次来这里提问,不胜感激! :) 另外,我尽量不使用 .sort() 或 find() 函数或“in”运算符——例如“if 6 in [5, 4, 7 6] ...”

编辑*:通过改变 L

L = sorted(allRows,key=lambda x: int(x[1]),reverse=True)

我已经到了让列表按降序排列的地步:

State  Total #,% passed,%female
California 4964,76,22
Texas 3979,62,23
New York 1858,69,20
Virginia 1655,60,19
Maryland 1629,66,20
New Jersey 1582,74,15
Illinois 1559,69,13
Florida 1521,44,20

现在我似乎不太明白如何根据这些总数只取前 5 名和后 5 名...

最佳答案

对于前五名-

top_five = L[:5]

最后五名-

bottom_five = L[-5:]

详情https://www.programiz.com/python-programming/methods/built-in/slice

关于python - 如何从嵌套列表中仅获取前 5 名和后 5 名列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24847197/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com