Python - Crear un diccionario desde un .txt

 
Vista:
sin imagen de perfil

Crear un diccionario desde un .txt

Publicado por Carolina (9 intervenciones) el 16/08/2015 15:06:01
Hola a todos:

tengo un archivo que se llama words.txt y lo que quiero hacer es escribir un código que me permita leer el archivo y que guarde las palabras de éste en un diccionario sin importar cuales son los valores de cada "key". He escrito el sgte código pero por alguna razón me devuelve una lista vacía. Alguien podría explicarme por que sucede esto?

Muchas gracias :)

Carolina

1
2
3
4
5
6
7
8
fname = input("File name: ")
if len(fname)<1 : fname = "words.txt"
dico = dict()
for line in fname:
    word = line.rstrip().split()
    if len(word) > 1:
        dico[word[1]] = word[:]
print(dico)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Crear un diccionario desde un .txt

Publicado por xve (1646 intervenciones) el 17/08/2015 09:00:52
Hola Carolina no entiendo muy bien como quieres guardar las letras en un diccionario, ya que como sabes un diccionario es clave valor, y no se muy bien como lo quieres guardar..

De todas maneras, en tu código no abres el archivo words.txt... estas recorriendo el nombre del archivo!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Crear un diccionario desde un .txt

Publicado por Carolina (9 intervenciones) el 17/08/2015 09:06:39
Vale muchas gracias :) igual en otro foro me contestaron y pude dar con la respuesta. Si a alguien le puede interesar:

1
2
3
4
5
6
7
8
9
10
11
12
13
import os
os.chdir("/Users/MissOgra/Documents")
fname = input("File name: ")
if len(fname) < 1 : fname = "words.txt"
fh= open(fname)
counter = 0
dictionairy = dict()
for line in fh:
    words = line.rstrip().split()
    for word in words:
        dictionairy[word] = counter
        counter += 1
        print(dictionairy)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Crear un diccionario desde un .txt

Publicado por xve (1646 intervenciones) el 17/08/2015 18:31:19
Hola Claudia, ahora lo he entendido, lo que tu querías guardar en un diccionario cada palabra con su posición en el archivo de texto... pero creo que tienes un pequeño error, ya que si se repite una palabra, siempre te coge la ultima posición, cuando debería de cogerte la primera, no?

te muestra el código un poco modificado... para que te almacene la primera vez que aparece, no la última.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import os
os.chdir("/Users/MissOgra/Documents")
fname = input("File name: ")
if len(fname) < 1 : fname = "words.txt"
fh= open(fname)
counter = 0
dictionairy = dict()
for line in fh:
	words = line.rstrip().split()
	for word in words:
		if not word in dictionairy:
			dictionairy[word] = counter
			counter += 1
print(dictionairy)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Crear un diccionario desde un .txt

Publicado por Luis Rivaldo (1 intervención) el 25/08/2015 12:56:33
Estuve revisando la pregunta y las respuestas anteriores, pero medi cuenta que quieres crear es un diccionario apartir de la lectura de un archivo tipo texto.
Me parece que la una forma puede ser la siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import os
os.chdir("c:/python34")  #Directorio Especifico donde esta el archivo words.txt
fname = input("File name: ")
if len(fname) < 1 : fname = "words.txt"
fh= open(fname)
counter = 0  #Esta Variable no esta haciendo nada realmente un contador de numeros de filas o registros que tiene words.txt
dictionairy = dict()
for line in fh:
	words = line.rstrip().split()
	dictionairy[words.pop(0)] = words.pop(1)
	counter += 1
	words = ""  #Lo hacemos vacio o nulo.
 
print("Ultimo: " , dictionairy)

Me pueden decir si esta bien. Realmente esta es mi primeras lineas de codigo en python y escogi practicar con este foro de consultas
Muchas Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar