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'的操作数类型,这可能意味着您仍然有一个字符串列表,而不是数字。请参阅示例代码第一段的最后一行,其中I
map(int,
要从字符串转换的列表(如
'100'
)到数字(如
100
)(请注意缺少的引号)。我希望在不使用模块的情况下解决此问题。有什么想法吗?其他响应不起作用。
排序
需要