Python 列表只正确排序一次,然后在以后的时间中排序错误

Python 列表只正确排序一次,然后在以后的时间中排序错误,python,sorting,Python,Sorting,我对csv文件进行了排序,并将其转换为列表列表。我现在需要根据特定的索引对列表进行排序 以下代码块起作用: def highestPoint(copiedList): copiedList.sort(key=lambda x: x[2], reverse=True) date = copiedList[0][0] value = float(copiedList[0][2]) print("\nThe day where the stock reached

我对csv文件进行了排序,并将其转换为列表列表。我现在需要根据特定的索引对列表进行排序

以下代码块起作用:

def highestPoint(copiedList):

    copiedList.sort(key=lambda x: x[2], reverse=True)

    date = copiedList[0][0]
    value = float(copiedList[0][2])

    print("\nThe day where the stock reached its highest point is",
          date, "with" " a value of {:,.2f}".format(value))
现在,我假设我可以复制并粘贴这段代码,在两个点中替换
[2]
,以便对列表排序并打印结果

很明显,print语句中的单词发生了更改,过程的名称也发生了更改,但其他所有内容都是一样的

我们有样本输出,我的答案不一样。第一个代码有效,但其他代码无效


每个代码块都是自己的过程,每次都传递
copiedList
copiedList
只是原始
dataList

的一个浅拷贝,我认为当您读取文件时,您没有将str转换为float,因此排序功能可能无法工作。

例如:

print('10' > '5')
False
我建议您将数字转换为浮点数,而不是排序

对字符串进行数字排序时,如下所示:

numString = ["1","5000","3","6","30","4","2","200"]
print(sorted(numString))

['1', '2', '200', '3', '30', '4', '5000', '6']

使用
max()
min()
而不是
sort()
将大大加快编码速度。它们具有相同的
key
参数。我将
copiedList.sort(key=lambda x:x[2])
更改为
copiedList=max(key=lambda x:x[2]
它生成了日期为2的整数和值应为1.00的整数。我做错了吗?是的。如果只需要最大值,则根本不需要修改
copiedList
。只需执行以下操作:
maxentry=max(copiedList,key=lambda x:x[2])
date=maxentry[0]
value=float(maxentry[2])
。注意:如果要转换为
浮点
,则键函数可能会更好,因为要匹配
lambda x:float(x[2])
。转换为浮点有效。我以前的代码是否尝试将浮点排序为字符串?@Brett以前的代码正在比较字符串。请参阅我的新更新