Трудности с чтением CSV-файла

1

Напишите функцию с именем "csv_to_kvs", которая берет строку как параметр, представляющий имя CSV файла с 4 столбцами в формате "строка, float, float, float" и возвращает новые строки привязки хранилища ключей к номерам с плавающей запятой, Возвращенное хранилище ключей будет иметь одну пару для каждой строки в файле с ключами из первого столбца файла CSV и значения из третьего столбца. (Мой код ниже)

import csv
def csv_to_kvs(string):
  with open(string) as f:
    my_file = csv.reader(f)
    my_dict = {}
    for row in my_file:
      my_dict[row[0]] = row[2]
    return my_dict

Как преобразовать значения в словарь в поплавки?

  • 0
    float(row[2]) ?
  • 0
    Я просто запустил твой код, включающий предложение Матье, в CSV-файле, содержащем a,1,2.0,3 , и он работал отлично. Если он не работает с вашим файлом, укажите его содержимое.
Показать ещё 2 комментария
Теги:
csv

1 ответ

0

Используйте литье.

Могут быть моменты, когда вы хотите указать тип для переменной. Это можно сделать с помощью литья. Python - ориентированный на объект язык, и поэтому он использует классы для определения типов данных, включая его примитивные типы.

Таким образом, кастинг в python выполняется с использованием функций-конструкторов:

int() - строит целое число из целочисленного литерала, литерал с плавающей точкой (округляя до предыдущего целого числа) или строковый литерал (при условии, что строка представляет целое число)

float() - создает число с плавающей точкой из целочисленного литерала, литерал с плавающей точкой или строковый литерал (при условии, что строка представляет собой float или целое число)

str() - строит строку из самых разных типов данных, включая строки, целые литералы и литералы с плавающей запятой

Ссылка: https://www.w3schools.com/python/python_casting.asp

Как выглядит ваш код:

import csv
def csv_to_kvs(string):
  with open(string) as f:
    my_file = csv.reader(f)
    my_dict = {}
    for row in my_file:
      my_dict[row[0]] = float(row[2])
    return my_dict
  • 1
    OP также может использовать словарь для понимания: return {row[0]: float(row[2]) for row in csv.reader(f)}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню