如何在列表数组中找到最大的浮点数?



我正在尝试为亨廷顿-希尔分配方法创建一个python脚本。为此,我需要每个州的人口、当前分配给每个州的席位数量以及值a,其中a = p/根号下(s*(s+1))我需要确定哪个州有最大的a值,为该州增加一个席位,并重复,直到人口最少的州成为最大的a. 我在列表中创建了行[3]来存储a值,但我无法让python识别最大的值。

我已经尝试排序行[3]或简单地找到最大值,但我被告知'float'对象是不可迭代的。如果我把它转换成一个字符串,然后排序,它会对每个数字排序,给我一个9和8的列表,等等。

import math
file_csv = open("statepop2.csv")
data_csv = csv.reader(file_csv)
list_csv = list(data_csv)
for row in list_csv:
row.append(0)
row[3] = int(row[1])/math.sqrt(int(row[2])*(int(row[2])+1))
print(sorted(row[3]))

我对这一切都很陌生,所以任何帮助都非常感谢

编辑:这似乎是CSV的问题,而不是排序的问题。我不知道出了什么问题,也不知道如何上传我的CSV文件。

您正在尝试对a的值进行排序因此给出浮点数作为参数到sorted()函数。这和输入

是一样的sorted(4.3)

由于4.3不是列表而是浮点数,因此不可迭代.

我建议简单地创建一个列表,并将值附加到该列表,然后打印排序列表。

import math, csv
file_csv = open("statepop2.csv")
data_csv = csv.reader(file_csv)
list_csv = list(data_csv)
rows = []
for row in list_csv:
row.append(0)
row[3] = int(row[1])/math.sqrt(int(row[2])*(int(row[2])+1))
rows.append(row[3])
print(sorted(rows))

如果您需要CSV中的其他数据(即国家名称?)与a值一起显示,只需使行成为dict:

rows = {}
然后您可以添加一个字典条目,将另一条信息作为:
countryName = row[x]
rows[countryName] = row[3]

问题是row[3]是一个整数,而不是一个列表。不能对整数排序。

我不知道你到底想做什么,但试试这个:

for row in list_csv:
row.append(0)
row[3] = int(row[1])/math.sqrt(int(row[2])*(int(row[2])+1))
print(max([row[3] for row in list_csv]))

直接用max()

a = [1.2, 3.8, 4.9]
b = max(a)
print(b)
# 4.9