Python 我的输出显示不正确我是否正确调用了我的定义,以及我是否正确返回了这些定义的值?
我的代码有几个问题。我希望它张贴的日期和价格列表的最高和最低的价值。现在它没有发布列,我尝试调用我的定义作为final_list,并在发布请求的列时在print语句中实现。它在输出中返回“None”。它不起作用。现在我想知道我的定义是否返回了正确的值Python 我的输出显示不正确我是否正确调用了我的定义,以及我是否正确返回了这些定义的值?,python,Python,我的代码有几个问题。我希望它张贴的日期和价格列表的最高和最低的价值。现在它没有发布列,我尝试调用我的定义作为final_list,并在发布请求的列时在print语句中实现。它在输出中返回“None”。它不起作用。现在我想知道我的定义是否返回了正确的值 我是否在定义中返回了正确的值 我是否正确调用了要在输出中显示的列的定义 对于“最低”和“最低”,我必须在打印语句中实现什么 “highest”用于显示列,如果我没有变量 实施。忽略这一点,但请让我知道,这样我可以修复它 我当前的输出是: En
Enter a file name: table.csv
Which column: 5
Lowest 5:
Highest 5:
do you want to continue?
我希望我的输出是:
Which column: 6
Lowest 6 for column 6
Date:08-1985, Value: 1.70
Date:09-1985, Value: 1.77
Date:06-1985, Value: 1.84
Date:10-1985, Value: 1.90
Date:07-1985, Value: 1.93
Date:11-1985, Value: 2.19
Highest 6 for column 6
Date:09-2012, Value:674.54
Date:08-2012, Value:635.39
Date:10-2012, Value:628.17
Date:04-2012, Value:597.19
Date:07-2012, Value:592.33
Date:03-2012, Value:569.11
csv.file如下所示(前几行,共1700行):
谢谢,希望这是详细和简洁的。那么您的CSV文件有六列?每个数据中的数据是什么?输入整数的人如何知道哪些数据可用 显然,您只对日期和值感兴趣,而忽略其他列中的数据 因此,我可能会在逐行读取CSV文件时尝试将其写入字典,如下所示:
dict = {
"08-1985": "1.70",
"06-1985": "1.77",
"09-1985": "1.84"
}
01-1678, 1.34
03-1678, 1.54
02-1567, 1.92
10-1267, 1.89
11-1567, 1.90
12-1679, 1.06
03-1465, 1.78
04-1577, 1.38
05-1898, 1.22
06-1966, 1.66
然后,您可以轻松返回六个键值对,它们要么是最新的日期,要么是最旧的日期,要么是最大值,要么是最小值
如果重要的是告诉用户该对是“date:value”,那么您只需在调用字典中的键或值之前打印信息即可
保存整个
“日期:08-1985”
和“值:1.70”
字符串似乎会导致不必要的复杂化。第一次读取CSV数据时,我会使用分隔符“:”和“,”,只保留您想要使用的实际信息。根据对上一个答案的评论,这里有一种不同的方法,假设“日期:”
和“值:”
是列标题,而不是CSV文件中的行数据的一部分:
# script for sorting nested lists
# adapted from https://www.geeksforgeeks.org/python-sort-list-according-second-element-sublist/
import csv
mycsv="C:\\Users\\mobarget\\Google Drive\\mycsv.csv"
table=[row for row in csv.reader(open(mycsv)) if row]
print(table)
# output should look like this:
# [['08-1985', '1.70'], ['07-1966', '1.57'], ['01-1982', '1.89']]
# Sort first element in nested lists
def sortdate(nested):
l = len(nested)
for i in range(0, l):
for j in range(0, l-i-1):
if (nested[j][0] > nested[j + 1][0]):
tempo = nested[j]
nested[j]= nested[j + 1]
nested[j + 1]= tempo
return nested
# Sort second element in nested lists
def sortvalue(nested):
l = len(nested)
for i in range(0, l):
for j in range(0, l-i-1):
if (nested[j][1] > nested[j + 1][1]):
tempo = nested[j]
nested[j]= nested[j + 1]
nested[j + 1]= tempo
return nested
# Print first six items in sorted lists
print(sortdate(table)[:6])
print(sortvalue(table)[:6])
我的输入文件有2列10行,如下所示:
dict = {
"08-1985": "1.70",
"06-1985": "1.77",
"09-1985": "1.84"
}
01-1678, 1.34
03-1678, 1.54
02-1567, 1.92
10-1267, 1.89
11-1567, 1.90
12-1679, 1.06
03-1465, 1.78
04-1577, 1.38
05-1898, 1.22
06-1966, 1.66
我得到的按日期排序的输出是:
[['01-1678', ' 1.34'], ['02-1567', ' 1.92'], ['03-1465', ' 1.78'], ['03-1678', ' 1.54'], ['04-1577', ' 1.38'], ['05-1898', ' 1.22']]
按值排序的输出为:
[['12-1679', ' 1.06'], ['05-1898', ' 1.22'], ['01-1678', ' 1.34'], ['04-1577', ' 1.38'], ['03-1678', ' 1.54'], ['06-1966', ' 1.66']]
按值排序效果很好,但日期当然是作为字符串读取的,因此排序不正确。因此,此列中的数据首先需要转换为YYYY-MM格式,此脚本才能工作。但这可能是需要处理的…所需的输出很重要,但您忘记发布实际输出…您在def get_input_descriptor()中返回的文件对象是什么?您没有在该方法中定义它,它将始终作为空文件发送_object=()@Programmer,我在我的描述中描述了实际输出。。。我试着实现的。不过,我将对问题进行编辑,使其更加具体。@Neeraj感谢您的输入。请共享一个示例输入和示例输出。如果您仍然在csv.file显示的内容中获得空值,则没有6列,而我要求显示数字1-6列。你的解决方法不是硬编码吗?而不是从文件中读取。我的缺点是不理解和没有发布足够的细节。我不想发布太多。我想你的意思是行多于列。您想显示两个不同列中的六行,一行是日期,一行是值?并且“date://”值是否为:“仅列标题?”?这会让事情变得容易得多。如果您可以共享实际CSV文件中的一些示例行,我们将更好地理解您的问题。PS:如果让Python为您计算行数,您还可以通过相应地调用最后六项来获得每列中的最大数。