При записи элементов списка (словарей) в файл следует ошибкаа KeyError: 0
def new_dict(self):
print("You want to create a new dictionary?(yes or no)- ")
ans = input()
n = 0
while ans.upper() == 'YES':
print("People №", n)
nam = str(input("Person Name: "))
sur = str(input("Person Surname: "))
age = int(input("Person age: "))
color = str(input("Person Lovely color: "))
self.dict_1 = {
"Name": nam,
"Surname": sur,
"Age": age,
"Lovely color": color}
self.main_list.append(self.dict_1)
ans = input("Write a next person(Yes or no)? ")
n += 1
if ans.upper() == 'NO':
break
def file_print(self):
with open("C:/Users/vlodko/Desktop/PYTHON_WORK/base.txt") as file:
for i in range(len(self.main_list)):
file.write("Name: "+self.dict_1[i]["Name"]+'\n')
file.write("Surname: " + self.dict_1[i]["Surname"] + '\n')
file.write("Age: " + str(self.dict_1[i]["Age"]) + '\n')
file.write("Lovely color: " + self.dict_1[i]["Lovely color"] + '\n')
file.close()
Ответы (1 шт):
Автор решения: Jack_oS
→ Ссылка
Вы в def new_dict() формируете словарь с ключами Name, Surname, Age и Lovely color. Среди них нет ключа-нумератора, по которому вы дальше пытаетесь брать значание (в self.dict_1[i]["Name"], например). Потом добавляете этот словать в список main_list.
Если я правильно понял, и нужно обойти именно список main_list и записать в файл каждую пару ключ-значение из словарей с новой стоки, то так:
def file_print(self):
with open("C:/Users/vlodko/Desktop/PYTHON_WORK/base.txt", "w") as file:
for row in self.main_list:
file.write(f'Name: {row["Name"]}\n')
file.write(f'Surname: {row["Surname"]}\n')
file.write(f'Age: {row["Age"]}\n')
file.write(f'Lovely color: {row["Lovely color"]}\n')
Или даже так, раз у вас ключ используется, как начало строки:
for row in self.main_list:
for k, v in row.items():
file.write(f'{k}: {v}\n')
PS и file.close() там не нужен, вам только вчера об этом говорили ))