Из словаря Python, как сохранить ключ и значение в файл *.txt

Как распечатать ключ и значение в файл *.txt из словаря?

Я попытался прочитать данные и распечатать их в файле *.txt, но файл name.txt пуст.

#The code that I have tried
#my_dict is given above
def create_dict():

    with open("name.txt", "w+") as f:
    for key, value in my_dict:
            print(key, value)
            f.write('{} {}'.format(key, value))

Это немного вводящее в заблуждение название функции. Кроме того, старайтесь не затенять встроенные имена, такие как dict, своими собственными переменными. Вместо этого назовите это my_dict. В любом случае, где определяется ваш dict?

SyntaxVoid supports Monica 08.07.2019 20:16

Я думаю, вам нужно сделать отступ в коде после оператора with.

John Anderson 08.07.2019 20:17
for key, value in dict.items() также не используйте dict, так как это встроенное имя Python
Devesh Kumar Singh 08.07.2019 20:17

Кроме того, не close() свой файл на каждой итерации цикла; это не имеет смысла. У вас уже есть это в блоке with, поэтому закрытие обрабатывается за вас

roganjosh 08.07.2019 20:18

Отступ невозможен. Вы не можете close открыть файл в with обработчике контекста, особенно после первой итерации (но он написал бы запись один перед закрытием ... хотя без завершающей новой строки, поэтому файл не является допустимым текстовым файлом).

tripleee 08.07.2019 20:19

Почему бы просто не сериализовать dict в файл JSON?

balderman 08.07.2019 20:23

Добро пожаловать в StackOverflow. Пожалуйста, прочтите и следуйте инструкциям по размещению сообщений в справочной документации, предложенным при создании этой учетной записи. Здесь применяется Минимальный, полный, проверяемый пример. Мы не сможем эффективно помочь вам, пока вы не опубликуете свой код MCVE и точно не укажете проблему. Мы должны иметь возможность вставить ваш опубликованный код в текстовый файл и воспроизвести указанную вами проблему. StackOverflow не является ресурсом для проектирования, кодирования, исследований или учебных пособий.

Prune 08.07.2019 20:27
Почему в 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 может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
7
4 552
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

def create_dict():

  with open("name.txt", "w") as f:
    for key, value in thisdict.items():
      print(key, value)
      f.write('{} {}'.format(key, value)+"\n")

Вы должны переименовать свой словарь с «dict» на что-то другое (выше, как thisdict), так как dict — это специальное встроенное имя в Python.

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

Как указывалось в других ответах, ваш отступ просто неверен внутри вашего утверждения with.

Соленый огурец

Хотя, если ваша цель — сохранить словарь для дальнейшего использования, лучше всего использовать pickle. Это не сработает, если вы хотите сохранить словарь в удобочитаемом формате, но будет намного эффективнее в качестве метода хранения данных.

import pickle

my_dict = {
    'foo': 'bar',
    'baz': 'spam'
}

# This saves your dict
with open('my_dict.p', 'bw') as f:
    pickle.dump(my_dict, f)

# This loads your dict
with open('my_dict.p', 'br') as f:
    my_loaded_dict = pickle.load(f)

print(my_loaded_dict)  # {'foo': 'bar', 'baz': 'spam'}

Джейсон

Компромисс между эффективностью хранения и удобочитаемостью может заключаться в использовании вместо этого json. Это не удастся для сложных объектов Python, которые не сериализуемы в JSON, но, тем не менее, являются вполне допустимым методом хранения.

import json

my_dict = {
    'foo': 'bar',
    'baz': 'spam'
}

# This saves your dict
with open('my_dict.json', 'w') as f:
    # passing an indent parameter makes the json pretty-printed
    json.dump(my_dict, f, indent=2) 

# This loads your dict
with open('my_dict.json', 'r') as f:
    my_loaded_dict = json.load(f)

print(my_loaded_dict)  # {'foo': 'bar', 'baz': 'spam'}

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