#python
#python
Вопрос:
У меня есть файл csv, содержащий три столбца: дату, время и температуру.
Теперь у меня есть следующий код, и мне нужно объединить дату, время и температуру во временной строке и добавить временную строку в массив, который содержит значения, где температура> 80, и распечатать результат.
import csv
data_array = []
output = []
with open("temp.csv") as csvfile:
csv_reader = csv.reader(csvfile, delimiter=",")
next(csv_reader, None)
for row in csv_reader:
data_array.append({"date": row[0], "time": row[1], "temp": float(row[2])})
#create an array of dictionary to put related data together; convert the temperature to float.
for item in data_array:
if item['temp'] > 80:
output.append(item)
print(output)
Я могу распечатать только словарь этих элементов, но как я могу объединить элементы и распечатать результат? Разве я не должен использовать dictionary?
Комментарии:
1. Я не понимаю, как будет выглядеть ваш ожидаемый результат. Не могли бы вы опубликовать пример?
2. Конечно. например{ [‘1/2/2018 10:00 утра’, 65.5], [1/2/2018 11:00 AM’, 67.3], … }
Ответ №1:
Вам не нужен временный список dicts. Просто создайте список из объединенных даты и времени и температуры и добавьте список в список выходных данных, когда температура превысит 80, непосредственно в цикле, который выполняется с помощью программы чтения CSV:
with open("temp.csv") as csvfile:
csv_reader = csv.reader(csvfile, delimiter=",")
next(csv_reader, None)
for date, time, temperature in csv_reader:
temperature = float(temperature)
if temperature > 80:
output.append([' '.join((date, time)), temperature])
Комментарии:
1. Большое вам спасибо. Мой второй день в python, поэтому пока не делаю много простых вещей.
Ответ №2:
Просто измените
output.append(item)
Для
output.append(['{} {}'.format(item['date'], item['time']), item['temp']])