Конвертировать csv-файл в словарь с выбранными ключами?

#python #python-3.x #csv #dictionary

#python #python-3.x #csv #словарь

Вопрос:

Я в основном пытаюсь преобразовать csv-файл в словарь с моими собственными именованными ключами, но по какой-то причине я получаю синтаксическую ошибку. Я использую последнюю версию Python btw. Вот как выглядит файл csv:

 1|apple|0.50|60
2|orange|0.4|55
3|mango|0.6|33
 

Я хочу создать словарь такой формы для каждого фрукта:

 dictionary={
'1':{'fruit':'apple',
     'price':0.5,
     'stock':60},
'2':{...},
'3':{...},
}
 

Вот моя попытка:

 with open('fruit.csv', mode="rt", encoding="utf8") as f:
            reader = csv.reader(f, delimiter='|')
            for row in reader:
                product={row[0]:{'fruit'=row[1],'price'=row[2],'stock'=row[3]}}
            print(product)

 

Но, похоже, это не работает: (
Я новичок в Python и все еще пытаюсь учиться.
Спасибо всем!

Ответ №1:

Ваш синтаксис действительно неправильный.

Вы, вероятно, ищете

 products = {}
with open("fruit.csv", mode="rt", encoding="utf8") as f:
    reader = csv.reader(f, delimiter="|")
    for row in reader:
        products[row[0]] = {"fruit": row[1], "price": row[2], "stock": row[3]}
print(products)
 

Комментарии:

1. Ах, да, я использовал = вместо: Это было быстрое решение, большое вам спасибо!

Ответ №2:

При работе с CSV мы используем ‘=’ вместо ‘:’. Ваш синтаксис неверен. Попробуйте это.

 import csv
di = {}
with open('fruit.csv', mode="rt", encoding="utf8") as f:
    reader = csv.reader(f, delimiter='|')
    for row in reader:
        di[row[0]] = {'fruit':row[1],'price':row[2],'stock':row[3]}
print(di)
 

Комментарии:

1. Да, я допустил глупую синтаксическую ошибку. Спасибо, что указали на это!

Ответ №3:

Вы должны сделать так

 product = {}
for row in reader:
   product[row[0]] = {'fruit'=row[1],'price'=row[2],'stock'=row[3]}
 

Комментарии:

1. По-прежнему недопустимый синтаксис. Ключи и значения словаря разделяются двоеточиями.