Python 排序并从文件中获取最高值
我有一个文件,其中的行如下所示:Python 排序并从文件中获取最高值,python,Python,我有一个文件,其中的行如下所示: my_dictionary = 'tom', 10, 20, 0, 100, 0, 100, 70, 80, 90, 0, 80, 85 汤姆,10,20,0,100,0,100,70,80,90,0,80,85 我想从数字10到第二个100,然后使用最大的四个值。然后取平均数 我有: for i in range((my_dictionary[1:6])) : for item in inlist:
my_dictionary = 'tom', 10, 20, 0, 100, 0, 100, 70, 80, 90, 0, 80, 85
汤姆,10,20,0,100,0,100,70,80,90,0,80,85
我想从数字10到第二个100,然后使用最大的四个值。然后取平均数
我有:
for i in range((my_dictionary[1:6])) :
for item in inlist:
if item > largest:
largest = item
elif largest > item > second_largest:
second_largest = item
elif largest > item > second_largest > third_largest:
third_largest = item
elif largest > item > second_largest > third_largest > fourth_largest:
fourth_largest = item
q = (sum(inlist))/4
这是行不通的。我担心的是,每一行都不是一个列表。错误出现在第一行,因为类型不可更改
编辑:我想在没有模块的情况下完成这项工作。另外,我正在为行创建一个列表,其中包含:name、q1、q2、q3、q4、q5、q6、a1、a2、a3、a4、middterm、final=line.strip().split('、'))编辑:这是一个完整的示例,在Python 3中。注意:我在调用
sorted()
时添加了reversed=True
。这是一个错误之前
另外,请注意,这里没有“模块”。这些都是基本python内置的函数/关键字/功能。无需进口
input = 'tom, 10, 20, 0, 100, 0, 100, 70, 80, 90, 0, 80, 85'
my_dictionary = input.split(', ')
username = my_dictionary.pop(0)
my_dictionary = list(map(int, my_dictionary))
greatest_4values = sorted(my_dictionary[0:6], reverse=True)[0:4]
average = sum(greatest_4values)/4.0
print("Average = ", average)
print("Greatest 4 values = ", greatest_4values)
编辑:这是一个完整的例子,在Python3中。注意:我在调用
sorted()
时添加了reversed=True
。这是一个错误之前
另外,请注意,这里没有“模块”。这些都是基本python内置的函数/关键字/功能。无需进口
input = 'tom, 10, 20, 0, 100, 0, 100, 70, 80, 90, 0, 80, 85'
my_dictionary = input.split(', ')
username = my_dictionary.pop(0)
my_dictionary = list(map(int, my_dictionary))
greatest_4values = sorted(my_dictionary[0:6], reverse=True)[0:4]
average = sum(greatest_4values)/4.0
print("Average = ", average)
print("Greatest 4 values = ", greatest_4values)
不需要复杂的条件,只需使用或,因为这是一个小数量的项目,无论如何,排序他们的很多,并切掉最大的: 您的代码没有足够的上下文来确定
my_dictionary
的来源,但一般的想法是将您关心的值切掉,制作一个列表
进行排序,然后平均这些值:
import heapq
top4 = sorted(myvalues[1:7], reverse=True)[:4]
# or heapq
top4 = heapq.nlargest(4, myvalues[1:7])
然后将其平均:
avg = sum(top4) / 4.
不需要复杂的条件,只需使用或,因为这是一个小数量的项目,无论如何,排序他们的很多,并切掉最大的: 您的代码没有足够的上下文来确定
my_dictionary
的来源,但一般的想法是将您关心的值切掉,制作一个列表
进行排序,然后平均这些值:
import heapq
top4 = sorted(myvalues[1:7], reverse=True)[:4]
# or heapq
top4 = heapq.nlargest(4, myvalues[1:7])
然后将其平均:
avg = sum(top4) / 4.
我想我们是这样开始的:
my_dictionary = 'tom', 10, 20, 0, 100, 0, 100, 70, 80, 90, 0, 80, 85
我们只需要从10到第二个100的数字,所以
aList = my_dictionary[1:7]
Python内置的排序功能将数字从最小到最大排序
aList = sorted(aList)
由于我们希望列表中的四个最大的数字按从最小到最大的顺序排列,因此我们希望列表中的最后四个项目
greatest = aList[-4:]
最后,为了得到平均值,我们可以简单地对最大列表中的值求和并除以4(因为我们总共平均了4个值)
float
只允许答案有小数位。如果没有浮动,平均值为57。使用float
,平均值为57.5我假设我们是这样开始的:
my_dictionary = 'tom', 10, 20, 0, 100, 0, 100, 70, 80, 90, 0, 80, 85
我们只需要从10到第二个100的数字,所以
aList = my_dictionary[1:7]
Python内置的排序功能将数字从最小到最大排序
aList = sorted(aList)
由于我们希望列表中的四个最大的数字按从最小到最大的顺序排列,因此我们希望列表中的最后四个项目
greatest = aList[-4:]
最后,为了得到平均值,我们可以简单地对最大列表中的值求和并除以4(因为我们总共平均了4个值)
float
只允许答案有小数位。如果没有浮动,平均值为57。使用float
,平均值为57.5请在此处逐字复制整个输出。永远不要试图解释错误消息,因为你通常会忽略一些关键信息,这会使问题变得不那么容易理解;这个错误显然是我的字典[1:6]的一个问题(你不能切片一个dict
),所以我认为你创建了一些比拆分行更复杂的数据结构。而且,range(我的字典[1:6])
毫无意义<代码>范围生成顺序整数,并向其传递一个切片而不是终点。您可能只想直接迭代切片,根本不使用range
。请在此处逐字复制整个输出。永远不要试图解释错误消息,因为你通常会忽略一些关键信息,这会使问题变得不那么容易理解;这个错误显然是我的字典[1:6]的一个问题(你不能切片一个dict
),所以我认为你创建了一些比拆分行更复杂的数据结构。而且,range(我的字典[1:6])
毫无意义<代码>范围生成顺序整数,并向其传递一个切片而不是终点。您可能只想直接迭代切片,根本不使用range
。这会导致一个错误,即我无法对范围中的值执行操作。不支持+:'int'和'str'的操作数类型完整消息是:计算函数时出错:第16行的TypeError不支持+:'int'和'str'的操作数类型,这可能意味着您仍然有一个字符串列表,而不是数字。请参阅示例代码第一段中的最后一行,其中我将(int,
列表从字符串(如'100'
)转换为数字(如100
)(请注意缺少引号)。这会导致一个错误,即我无法对范围内的值执行操作。不支持的操作数类型对于+:'int'和'str',完整消息是:计算函数时出错:第16行的TypeError不支持+:'int'和'str'的操作数类型,这可能意味着您仍然有一个字符串列表,而不是数字。请参阅示例代码第一段的最后一行,其中Imap(int,
要从字符串转换的列表(如'100'
)到数字(如100
)(请注意缺少的引号)。我希望在不使用模块的情况下解决此问题。有什么想法吗?其他响应不起作用。排序
需要