Найти - Пользователи
Полная версия: Прошу подсказать как правильно использовать функцию "ключ - значение" при создании словаря.
Начало » Центр помощи » Прошу подсказать как правильно использовать функцию "ключ - значение" при создании словаря.
1
Dmitri852
Моя идея, с помощью tkinter создать словарь. Есть файл по умолчанию, в который можно вводить новые слова и их перевод (два поля ввода),(“x” переменная русское слово, и “y” переменная английское слово) и записывать их в файл нажатием кнопки “добавить”. И также поиск по имеющимся словам в словаре с помощью метода “ключ - значение”(ввести слово в поле (переменная z) и нажатием на кнопку “поиск” произвести поиск и вывод результата в поле вывода).

Пробовал разные варианты, оказывалось что использовал либо неработающие функции в питоне 3.6, либо выходили ошибки, знаний не хватает, чтобы понять как правильно пользоваться методом “ключ - значение”, если возможно помогите, пожалуйста.

В коде много закомментировано, пробовал по разному, надеюсь не мешает. Вот мой код:
marvellik
нет не работающих методов в питон 3.6 , просто вы их не умеете готовить. и просто записать словарь в том виде который вы понимаете как словарь в коде в файл не получиться. файл надо переписывать так как дозапись будет каждый раз добавлять словарь с новыми данными а не изменять уже записанный
 from tkinter import *
import json
import os
#------------------------------------------------------------------------------------
def zapis(x,y,dct):
    dct.update({x : y})
    dct.update({y : x})
    with open('text2.txt', 'w') as f:
        f.write(json.dumps(dct))
#----------------------------------------------------------------------------------------------------
def poisk(z,dct):
    t.delete('1.0', END)
    if z in dct:
        t.insert(END,dct[z])
    else:
        t.insert(END,'нет результата')
#-----------------------------------------------------------------------------------------------------
dct = {}
if 'text2.txt' in os.listdir():
    with open('text2.txt', 'r') as f:
        dct = json.loads(f.read())
#----------------------------------------------------------------------------------------------------    
root = Tk()
root.title("Dictionary")
x = StringVar()  # Creating the variables that will get the user's input.
y = StringVar()
z = StringVar()
label_1 = Label(root, text="Русский: ", bg="#333333", fg="white")
label_2 = Label(root, text="English:", bg="#333333", fg="white")
label_3 = Label(root, text="Поиск:", bg="#333333", fg="white")
entry_1 = Entry(root, textvariable=x)#Russian
entry_2 = Entry(root, textvariable=y)#English
entry_3 = Entry(root, textvariable=z)#Poisk
t=Text(root,width=15,height=1)
label_1.grid(row=1)
label_2.grid(row=3)
label_3.grid(row=8)
entry_1.grid(row=2, column=0)
entry_2.grid(row=4, column=0)
entry_3.grid(row=9, column=0)
t.grid(row=14,column=0)
but = Button(root, text="Добавить/Add", bg="#333333", fg="white", command=lambda :zapis(x.get(), y.get(),dct))  # Note the use of lambda and the x and y variables.
but.grid(row=5, column=0)
but1=Button(root,text='Искать',bg="#333333", fg="white", command=lambda :poisk(z.get(),dct))
but1.grid(row=12,column=0)
root.mainloop()
Dmitri852
Огромное спасибо!
Буду учиться понимать правильно.
Скажите, мой код совсем невозможно исправить…или вполне можно, но так правильнее, как вы показали?

Извините за дополнительный вопрос, в ответ приходит ошибка:

Traceback (most recent call last):
File “C:\Users\Dmitry\Desktop\TTHK\Dictionary\29.1.2018.py”, line 21, in <module>
dct = json.loads(f.read())
File “C:\Users\Dmitry\AppData\Local\Programs\Python\Python36-32\lib\json\__init__.py”, line 354, in loads
return _default_decoder.decode(s)
File “C:\Users\Dmitry\AppData\Local\Programs\Python\Python36-32\lib\json\decoder.py”, line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File “C:\Users\Dmitry\AppData\Local\Programs\Python\Python36-32\lib\json\decoder.py”, line 357, in raw_decode
raise JSONDecodeError(“Expecting value”, s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
>>>

Погуглил, но решения не нашел сам.
rami
Dmitri852
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
>>>

Погуглил, но решения не нашел сам.
Это происходит, если текстовый файл открытый для чтения совсем пустой. Он должен содержать как минимум пустой словарь: {} (две фигурные скобки).
Dmitri852
Огромное спасибо!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB