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, reimport pickle
file=open("indicenormal.txt")
palabrasg=[]
invertido={}
def indiceinv(palabrasg):
ind=0file2=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=0url=""
inicio=0 termino=0 i=0 coma=0palabra=''
frecuencia=''
for line in file:if line[0]=='u':
urls[line]=line
url=lineprint(line)
else: for s in line:if s=='(':
inicio=i a=1if s==',':
coma=i b=1if s==')':
termino=i c=1if 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=0i+=1
i=0bus()
#print (urls)
#print (palabrasg)
print (invertido)
#indiceinv(palabrasg)
Valora esta pregunta


0
