Añadir elementos a un diccionario
Publicado por Josafat (18 intervenciones) el 27/11/2018 19:21:58
Hola, estoy intentando hacer un diccionario, agregarle nuevos elementos en una posición X, pero al final solo agrega el ultimo elemento y los anteriores no los toma en cuenta
En base de un archivo txt con la siguiente estructura:
url1
[ (p1,2) (p2,3) (p3,4)
]
url2
[ (p1,1) (p3,2) (p4,8)
]
url3
[ (p2,5) (p3,1) (p5,7)
]
Quiero hacer un diccionario donde la pX sea la llave de una lista y dentro tenga la lista con todos los elementos que la contengan:
{p1: ("url1":2), (url2,1)}
Y así con todas las palabras pero el unico resultado que me está dando es:
{'p1': ['url2\n', 1], 'p2': ['url3\n', 5], 'p3': ['url3\n', 1], 'p4': ['url2\n', 8], 'p5': ['url3\n', 7]}
Este es mi código:
En base de un archivo txt con la siguiente estructura:
url1
[ (p1,2) (p2,3) (p3,4)
]
url2
[ (p1,1) (p3,2) (p4,8)
]
url3
[ (p2,5) (p3,1) (p5,7)
]
Quiero hacer un diccionario donde la pX sea la llave de una lista y dentro tenga la lista con todos los elementos que la contengan:
{p1: ("url1":2), (url2,1)}
Y así con todas las palabras pero el unico resultado que me está dando es:
{'p1': ['url2\n', 1], 'p2': ['url3\n', 5], 'p3': ['url3\n', 1], 'p4': ['url2\n', 8], 'p5': ['url3\n', 7]}
Este es mi código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import io
import string, re
import pickle
file=open("indicenormal.txt")
palabrasg=[]
invertido={}
def indiceinv(palabrasg):
ind=0
file2=open("indiceinvertido.txt",'w')
for palabra in palabrasg:
str1 = ''.join(palabra)
if ind==0:
file2.write(str1+"\n[\n]")
ind+=1
else:
file2.write("\n"+str1+"\n[\n]")
urls={}
def bus():
opalabras={}
a=0
b=0
c=0
url=""
inicio=0
termino=0
i=0
coma=0
palabra=''
frecuencia=''
for line in file:
if line[0]=='u':
urls[line]=line
url=line
print(line)
else:
for s in line:
if s=='(':
inicio=i
a=1
if s==',':
coma=i
b=1
if s==')':
termino=i
c=1
if a==1 and b==1 and c==1:
palabra=line[inicio:coma].strip('(,)')
frecuencia=line[coma:termino].strip('(,)')
if palabra not in palabrasg:
palabrasg.append(palabra)
#print(line,inicio,coma,termino)
#print(palabra,frecuencia)
frecuencia=int(frecuencia)
opalabras=[url,frecuencia]
#opalabras=dict((key,value)for key, value in opalabras.items())
invertido[palabra]=opalabras
palabra=''
frecuencia=''
a=0
b=0
c=0
i+=1
i=0
bus()
#print (urls)
#print (palabrasg)
print (invertido)
#indiceinv(palabrasg)
Valora esta pregunta


0