Skip to content
Advertisement

dictionary seperation in python

i have a question that might end up being a fairly simple fix but i am having a lot of trouble with it. I am making a program that will allow the user to pick between a list of text files that are all like this

to search:mirar,buscar

to play:jugar

to be:ser,estar

to run:correr

to make:hacer

to talk:hablar

to take:tomar

to study:estudiar

to arrive:llegar

to practice:practicar

this is the exact format for all of them and i am supposed to put these into a dictionary as key value pairs to make a sort of quiz and ive managed to do that part however i am running into a couple of problems. one is that some of these such as to search for example have multiple correct answers and i dont know how to assign multiple different values to the same key or if thats even possible. and the second problem is that the values have n on the ends of them and i dont know how to remove that. and even if i did, the keys with two options only have the n on the second value.

import os
import sys

def file_open():
    file_list=[]
    contents=os.listdir()
    for i in contents:
            
        if '.txt' in i.lower():
            file_list.append(i)
    if file_list==[]:
        sys.exit('Error')    
    print('file list:',
          file_list)
    
    input_file=str(input('enter the input file to use from the ones above'))    
    while True:
        try:
            file=open(input_file,'r')
            break
        except FileNotFoundError:
            print('FileNotFoundError')
            

    return file

def file_read():
    dictionary={}
    for line in file:
        (key,val)=line.split(':')
        dictionary[key]=val


        
        
    return(dictionary)

this is all of the code that i have written out so far and i would appreciate any help or even general advice. Thank you.

Advertisement

Answer

You can store answers of each key into a list, for example:

query_answer={
      'to search':['mirar','buscar'],
      'to play':['jugar'],
      'to be':['ser','estar'],...}

Before process the values you should remove ‘n’:

def file_read(file):
    dictionary={}
    for line in file:
        (key,val)=line.split(':')
        val = val.rstrip("n")
        dictionary[key] = val.split(',')
    return dictionary
User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement