Как создать собственный файл CSV из словаря Python?

Я хочу создать файл CSV следующим образом:

Features, Value
f1, 1
f2, 2
f3, 3

Но я получаю это:

f1, f2, f3
1, 2, 3

Код, который я написал:

my_dict = {'f1': 1, 'f2': 2, 'f3': 3}
with open('testcsv.csv', 'w') as f:
    w = csv.DictWriter(f, my_dict.keys())
    w.writeheader()
    w.writerow(my_dict)

Что я должен делать?

Как вы думаете, откуда ваш код получит Features и Value?

MetallimaX 15.12.2020 09:31

Это вызовет ошибку, когда я запишу их в writeheader()!

David Ws. 15.12.2020 09:35

Ярлыки вашего заголовка должны соответствовать ключам вашего dict. См. пример в документации

MetallimaX 15.12.2020 09:37
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
3
75
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вам нужно будет сначала преобразовать ваши данные в соответствии с ожидаемой структурой

data = [{'Features':i,'Value':my_dict[i]} for i in my_dict]

Как только вы это сделаете, вы можете использовать pandas, чтобы сохранить его как CSV, например:

import pandas as pd
df = pd.DataFrame(data)
df.to_csv('testcsv.csv',index=None)

Полученный CSV:

Features,Value
f1,1
f2,2
f3,3

Разве панды не перебор для этой задачи? Что, если он не хочет поддерживать реализации c..

adir abargil 15.12.2020 09:41

@adirabargil Это совершенно излишне, я согласен с вами, но это гораздо более удобно для начинающих, чем стандартная библиотека CSV Python

GhaziBenDahmane 15.12.2020 09:44

Пока вы поощряете еще одного человека использовать панд, вы получаете мой голос!

adir abargil 15.12.2020 09:47

Как уже старый программист, я не чувствую, что pandas действительно удобна для начинающих. Вы действительно можете использовать его, не зная Python и его контейнеров, потому что он использует разные контейнеры, но он полон предостережений, с которыми может столкнуться новичок. И я нахожу здесь много вопросов пользователей, которые думали, что это волшебство (что такое Pandas...) и надеются, что они смогут волшебным образом угадать, если бы они захотели. И в этой последней части Pandas - это просто дополнительный язык для изучения...

Serge Ballesta 15.12.2020 09:57

Я думаю, он имеет в виду, что только этот конкретный случай подходит для начинающих...

adir abargil 15.12.2020 10:01

Pandas здесь немного переборщил, и модуля csv достаточно. Просто вы использовали его неправильно:

with open('testcsv.csv', 'w', newline='') as f:
    w = csv.writer(f)
    w.writerow(['Features', 'Value'])    # first write a header line
    for f, v in my_dict.items():
        w.writerow((f,v))                # then one row per item in the dict

Другие вопросы по теме