[Python-es] Duda sobre matrizes en python y diccionarios con listas

Rafael Gomes rggg88 en hotmail.com
Mie Mar 13 22:30:06 CET 2013


Hola de nuevo, ahora tengo una duda relacionada con la pregunta de mañana que lo queria guardar de forma diferente, ahora la informacion la tengo en este genero:

switch=[[u'00:00:00:1b:11:b4:16:80'], [u'00:00:00:02:44:a9:b5:34']]
puertos={u'00:00:00:02:44:a9:b5:34': [u'1'], u'00:00:00:1b:11:b4:16:80': [u'1']}
mi=[[u'00:00:00:1b:11:b4:16:80', 65534, u'00:1b:11:b4:16:80'], [u'00:00:00:1b:11:b4:16:80', 2, u'76:45:87:ba:d7:5a'], [u'00:00:00:1b:11:b4:16:80', 1, u'00:1b:11:b4:16:80'], [u'00:00:00:02:44:a9:b5:34', 65534, u'00:02:44:a9:b5:34'], [u'00:00:00:02:44:a9:b5:34', 2, u'0e:2f:31:21:82:ee'], [u'00:00:00:02:44:a9:b5:34', 1, u'00:02:44:a9:b5:34'], [u'00:00:00:02:44:a9:b5:34', 3, u'ba:67:bb:e1:da:5b']]

lista_hosts={}
host=[]

for sw in switch:
        for elem in mi:
                if (str(elem[0])==sw):
                        lista_hosts[sw]=[]
                        if str(elem[1]) not in (['65534'] + puertos[elem[0]]):
                                aux=[elem[2], elem[1]]
                                host.append(aux)
                                if host not in lista_hosts[sw]:
                                        lista_hosts[sw].append(host)

print lista_hosts

Mi idea es tener un diccionario para cada switch associando a cada los hosts respectivos, es decir, algo asi:
{u'00:00:00:1b:11:b4:16:80,1': [[[u'76:45:87:ba:d7:5a', 2], u'00:00:00:02:44:a9:b5:34,1':[u'0e:2f:31:21:82:ee', 2], [u'ba:67:bb:e1:da:5b', 3]]}


Solo que el me devuelve la lista vacia y no se que estoy haciendo mal, pienso que el problema es en el primer if pero no se que estoy haciendo mal.

Otras cosas q experimente:

Yo lo maximo de bueno que consegui fue esto:
{u'00:00:00:02:44:a9:b5:34,1':[u'0e:2f:31:21:82:ee', 2], [u'ba:67:bb:e1:da:5b', 3], [u'76:45:87:ba:d7:5a', 2]} {u'00:00:00:1b:11:b4:16:80,1':[]}

La otra cosa que hice fue esto:

portos={u'00:00:00:02:44:a9:b5:34': [u'1'], u'00:00:00:1b:11:b4:16:80': [u'1']}
mi=[[u'00:00:00:1b:11:b4:16:80', 65534, u'00:1b:11:b4:16:80'], [u'00:00:00:1b:11:b4:16:80', 2, u'76:45:87:ba:d7:5a'], [u'00:00:00:1b:11:b4:16:80', 1, u'00:1b:11:b4:16:80'], [u'00:00:00:02:44:a9:b5:34', 65534, u'00:02:44:a9:b5:34'], [u'00:00:00:02:44:a9:b5:34', 2, u'0e:2f:31:21:82:ee'], [u'00:00:00:02:44:a9:b5:34', 1, u'00:02:44:a9:b5:34'], [u'00:00:00:02:44:a9:b5:34', 3, u'ba:67:bb:e1:da:5b']]

lista_hosts=[]
host=[]

for elem in mi:
        if str(elem[1]) not in (['65534'] + portos[elem[0]]):
                aux=[elem[2], elem[1]]
                host.append(aux)
                if host not in lista_hosts:
                        lista_hosts.append(host)
print lista_hosts

que solo me da los hosts.
Pero cuando entro con los switches no consigo :/.

Si me pueden dar alguna pista o asi agradecia.

La otra duda es sobre como puedo hacer matrizes en python? Yo utilize este metodo pero no se si es el mas correcto

a=0
a=[a]*tamanho
matriz_adj=[a]*tamanho
print matriz_adj

La matriz es para tratar de hacer la matriz adjacente de mi red de casa.

Muchas gracias mas una vez, disculpen mi ignorancia.
 		 	   		  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20130313/8b083ff9/attachment.html>


Más información sobre la lista de distribución Python-es