6 / 6 / 5
Регистрация: 13.02.2016
Сообщений: 147
1

Работа со словарём в файле

11.06.2016, 12:09. Показов 1359. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При использовании словаря извлечённого из файла, не получается добавить в него данные. Я думал, что проблема в словаре(и сосздал эту тему).
Но оказалось, что в отрыве от файла, всё работает путём. Вот код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
M=open("mass", 'r')
m=M.read()
M.close
print(m)
sbc=[]
i=1
while i!='S':
  i=input('введите ключ S \n')
  if i=='S':
    break
  sbc.append(i)
for a in sbc:
   m[a]=input('введите элемент \n')
M=open("mass", 'w')
M.write(m)
M.close()
выдаёт ошибку:
Traceback (most recent call last):
File "ecode", line 15, in <module>
m[a]=input('введите его массу \n')
TypeError: 'str' object does not support item assignment

тот же код работает если словарь создан отдельно, а не извлечён из файла.

и почему не работает режим чтение-запись(open("file", '+'))?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.06.2016, 12:09
Ответы с готовыми решениями:

Работа со словарем
Всем привет! Продолжаю изучать Python, и возникла загвоздка, решение которой я не могу найти... ...

Работа со словарем
Всем привет! Есть словарь с таким вот содержанием: {&quot;2015-01-24 00:00:00&quot;: 1, &quot;2015-01-24...

Работа со словарем
Дан текст: в первой строке задано число строк, далее идут сами строки. Выведите слово, которое в...

Работа со словарём
Здравствуйте. Есть файл на рабочем столе, в котором две строки. Первая = почта:пароль. Вторая =...

7
Эксперт по компьютерным сетям
5889 / 3347 / 1033
Регистрация: 03.11.2009
Сообщений: 9,974
11.06.2016, 12:12 2
Лучший ответ Сообщение было отмечено zerkalo как решение

Решение

потому что из файла Вы читаете строку
0
4611 / 3148 / 1112
Регистрация: 21.03.2016
Сообщений: 7,842
11.06.2016, 12:17 3
Python
1
m=M.read()
потому что m это не словарь а список из элементов из файла
выведи print(m) и посмотри что у тебя в m
0
Эксперт по компьютерным сетям
5889 / 3347 / 1033
Регистрация: 03.11.2009
Сообщений: 9,974
11.06.2016, 12:19 4
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
потому что m это не словарь а список из элементов из файла
Список?

Цитата Сообщение от Semen-Semenich Посмотреть сообщение
выведи print(m) и посмотри что у тебя в m
лучше даже print(type(m))
0
6 / 6 / 5
Регистрация: 13.02.2016
Сообщений: 147
11.06.2016, 12:25  [ТС] 5
да лучше print(type(m))
потому что print(m) это {'Nast': 40.0, 'p2p': 123.0, 'fks4': 225.0}

Значит так просто в файл словарь не записать...
И не считать..
0
Эксперт по компьютерным сетям
5889 / 3347 / 1033
Регистрация: 03.11.2009
Сообщений: 9,974
11.06.2016, 12:26 6
для этого лучше использовать pickle или json
0
4611 / 3148 / 1112
Регистрация: 21.03.2016
Сообщений: 7,842
11.06.2016, 12:38 7
Цитата Сообщение от zerkalo Посмотреть сообщение
Значит так просто в файл словарь не записать
ну так пишите строку а потом из строки получаете словарь
Python
1
2
3
4
5
6
7
with open("mass") as m:
    rez =m.read().split()
m = dict()
for i in rez:
    key,val = i.split(':')
    m[key] = val
print(m)
Python
1
2
print(type(rez)) #<class 'list'>
print(type(m)) #<class 'dict'>
0
6 / 6 / 5
Регистрация: 13.02.2016
Сообщений: 147
11.06.2016, 12:49  [ТС] 8
это уже не "так просто"
но видимо так и сделаю, пока не прочитал о pickle
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.06.2016, 12:49
Помогаю со студенческими работами здесь

Работа со словарем - реально ли
Здравствуйте ребят :) Очень нужна ваша помощь! Подскажите, намекните, дайте совет - как работать со...

Работа со словарем Python
Всем добрый день, есть данная задача. Имеется Словарь (код ниже): ipNagios = { &quot;IgorVD&quot;:,...

Работа со словарем ispell
Здравствуйте, помогите разобраться. Для приведения введенного слова к исходной форме используется...

Работа с словарем в jquery
Столкнулся с проблемой, сравнения значений на соответствие в словаре, введенных в поле, покажите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru