Skip to main content

Diccionarios en Python

Los diccionarios son estructuras de datos que almacena una serie de valores utilizando otros como referencia para su acceso y almacenamiento. Los diccionarios se asemejan a los arreglos asociativos de PHP o a los objetos JSON de JavaScript ya que cada elemento es un par de clave valor, donde el primero debe ser único y será utilizado para obtener el dato almacenado. Al igual que las listas, los diccionarios son mutables e iterables y representan una colección de objetos que pueden ser de diferentes tipos, pero no tienen un orden específico, ya que el intérprete de Python se encarga de eso.

Declaración

Para declarar un diccionario se utilizan las llaves ({ }) entre las que se encuentran los pares clave – valor separados por comas, la clave de cada elemento está separada del correspondiente valor por dos puntos (:) en el siguiente ejemplo se muestra como declarar un diccionario.

Diccionario = {'a':1,'b':2,'c':3}

Otra manera de declarar un diccionario es utilizando la función dict().

Diccionario = dict(a=1, b=2, c=3)

Acceso, inserciones y borrados

Como lo vimos en el artículo de tuplas, para acceder a los elementos de esta, tenemos que usar el índice en función a la posición que ocupa cada de elemento. Los diccionarios, en cambio necesitamos utilizar la clave para accesar al valor de cada elemento. Usando nuestro ejemplo anterior para accesar al valor de 1 pondremos lo siguiente

Diccionario ['a']

Para modificar cualquier elemento basta con acceder con su clave de la siguiente manera:

Diccionario ['a'] = 2

Con esto el elemento con clave ‘a’ pasa a tener un valor de 2.

Para añadir un elemento es lo mismo que al modificar uno ya existente, ya que si la clave no existe se agrega automáticamente y se le añadirá su correspondiente valor.

Para iterar sobre los diccionarios tenemos tres métodos propios de esta estructura de datos: ítems (), values (), keys (). Por su nombre nos damos una idea de lo que realizan, el primero nos da acceso tanto a claves como a valores, el segundo nos devuelve los valores, y el tercero solo nos devuelve las claves del diccionario. Veamos a estos métodos en acción:

Cabe mencionar que al usar ítems() nos genera una lista y dentro de esta lista en cada posición hay tuplas con la clave y valor, en los dos últimos métodos nos genera una lista.

Para eliminar elementos usaremos la función del() para ello , necesitaremos parar como parámetro la clave que contiene el valor que deseamos eliminar. Por ejemplo para eliminar la clave ‘c’ hacemos lo siguiente del( Diccionario['c'])

Otra función integrada , en este caso len() también funciona sobre los diccionarios, devolviéndonos el numero total de elementos contenidos.

El operador   in en un diccionario sirve para comprobar si una clave existe. En caso afirmativo devolverá el valor de True y False en otro caso: x in Diccioanario  nos devolverá False

 

 

 

Leer Más

Hack del cifrado cesar

Ya vimos cómo es que funciona el cifrado cesar y programamos una función en la cual cifrábamos y des cifrábamos un mensaje, si no has visto la entrada ve aquí: cifrado cesar .

El cifrado cesar no nos da ninguna seguridad ya que como usa como claves las letras del abecedario es muy fácil de romper a través del método de fuerza bruta, el cual consiste en probar todas las claves posibles que en este caso son 26. Cada vez que probamos con una clave de ciframos el mensaje , lo volvemos a cifrar usando la clave que estamos probando y lo comparamos con el mensaje cifrado que nos dio el usuario , si se cumple esta condición se ha encontrado la clave correcta , si no se cumple prueba con la letra siguiente.

Código para romper el cifrado cesar

 

Leer Más

Cifrado de transposición

 

El cifrado por transposición consiste en agrupar los caracteres del mensaje a cifrar dentro de una matriz bidimensional, un carácter en cada índice de la matriz, el segundo paso es leer cada columna por ejemplo para cifrar el mensaje “A quien madruga Dios le ayuda” con una matriz de 5×5, en este caso el 5 sería nuestra clave, nuestra matriz quedaría de la siguiente manera:

A

Q

U

I

E

N

M

A

D

R

U

G

A

D

I

O

S

L

E

A

Y

U

D

A

H

 

El último elemento que esta sombrado es el relleno de la matriz este se genera aleatoriamente.

Ahora leemos cada columna para crear nuestro mensaje cifrado: ANUOY QMGSU UAALD IDDEA ERIAH, para mayor seguridad y complejidad podemos leer las columnas con un determinado orden preestablecido entre las entidades involucradas, por ejemplo leeremos las columnas con el orden 3-5-2-1-4 el mensaje cifrado seria : UAALD ERIAH QMGSU ANUOY IDDEA

Para des cifrar el mensaje lo que haremos es a volver a hacer una tabla para leer las columnas:

A

N

U

O

Y

Q

M

G

S

U

U

A

A

L

D

I

D

D

E

A

E

R

I

A

H

 

Si implementamos algún orden en especial para cifrar el mensaje, para des cifrarlo tenemos que leer las columnas en orden inverso, utilizando el mensaje UAALD ERIAH QMGSU ANUOY IDDEA al invertir el orden quedaría como el original y así podríamos generar la tabla anterior para des cifrar el mensaje.

Recomendaciones

Algunas personas manejan los espacios en blanco con caracteres especiales que al des cifrar el mensaje los sustituyen por los espacios en blanco para hacer más legible el mensaje.

Si nuestro mensaje es más corto que nuestra clave, el mensaje no quedaría cifrado del todo y sería más fácil de romper por ejemplo si nuestro mensaje es “hola amigo” y nuestra clave es 10 la matriz quedaría algo así:

H O L A (s) A M I G O

Como ven este mensaje queda en texto plano es decir que el método no servirá de nada, por eso hay que comprobar que el mensaje sea más grande que nuestra clave.

En este ejemplo use el carácter (s) como un espacio en blanco.

Algoritmo para Cifrar

 

Si quisiéramos cifrar todo un documento realizar el cifrado sería un trabajo titánico sin hablar del des cifrado del mismo, pero no hay que preocuparnos que por eso tenemos las computadoras para que realicen el trabajo tedioso por nosotros, ahora programemos una función para cifrar un mensaje y darle la clave para que genere la matriz.

 

 Código para decifrar

 

 

 

 

 


Leer Más

Cifrado Cesar

El cifrado cesar es un método de cifrado por transposición o desplazamiento, su origen se remonta a la antigua Roma donde julio cesar, de ahí el nombre del algoritmo, lo utilizaba para hacer llegar sus órdenes a sus generales en batalla con el fin de que si el mensaje era interceptado por el enemigo este no pudiera leerlo.

El cifrado funciona desplazando las letras según el numero clave por ejemplo, la letra A se cambiaría por la D si nuestra clave fuera 3, y la B pasaría a ser E y así sucesivamente. Este método de cifrado en la actualidad no provee ningún grado de seguridad ya que es muy fácil de romper, falta observar las letras que se repiten con más frecuencia, por ejemplo en el español la letra E es la más usada por lo tanto si vemos un texto cifrado en el cual se repite muchas veces la letra J podríamos calcular la clave restando el valor de la J menos el valor de la E obteniendo así un 5 , este número seria nuestra clave para poder descifrar el mensaje.

Código para cifrar y descifrar

Ahora que hemos visto un poco de historia veamos como programar una función para cifrar y descifrar mensajes utilizando python, en la parte de abajo les dejo el código comentado.

 

 

Espero que les haya gustado la entrada no olviden compartirla , en futuras entradas publicare más métodos criptográficos.

 

Leer Más

Método de integración Simpson 1/3

 

Código en python utilizando el método de Simpson 1 / 3 para integrales definidas, esta función recibe cuatro argumentos, el primero es el número de iteraciones (n) , el intervalo inferior (a) , el intervalo superior(b) , y la función que queremos integrar (f).

El valor de N es un entero.

El valor de los intervalos a y b son de tipo Float.

Y la función es un String por ejemplo “sin(x)”.

Pseudo – código.

Implementación en python

 


Leer Más

Interpolación de Lagrange

En está ocasión les dejo el algoritmo  hecho en python de la Interpolación de Lagrange, cualquier duda o comentario respecto al código lo pueden dejar en la parte de comentarios.

 

Leer Más

Metodo de Montecarlo Python

En este script hecho en python calcularémos el valor aproximado  de la constante PI usando el método de Montecarlo abajo les dejo el código comentado.

Si tienen una duda dejarla en los comentarios.

Leer Más

Tuplas en python


Es una estructura de datos que representa una colección de objetos, pudiendo estos ser de distintos tipos.
Declaración
Se declara utilizando paréntesis, entre los que se deben separarse por comas los elementos que van a formar parte de ella.

 

Cabe mencionar que las tuplas son  un tipo de dato inmutable, esto quiere decir que no es posible asignar directamente un valor a través del índice.

 

Tuplas anidadas

Como una tupla puede almacenar diferentes tipos de datos, es posible anidad diferentes tuplas.

 

 

Recorriendo Tuplas

Una característica de las tuplas es que son objetos  iterables; es decir, con un sencillo bucle for podemos recorrer fácilmente todos los elementos.

 

Operaciones con tuplas

Las operaciones que podemos realizar con las tuplas son la de concatenación entre dos tuplas al usar el operando “ + ” .

 

Otro operador que podemos usar con las tuplas es “ * ”, que sirve para crear una nueva lista donde los elementos de la original se repiten n veces.

 

Métodos   de las tuplas

Los principales métodos que incluyen las tuplas son index () y count (). El primero de ellos recibe como parámetro un valor  y devuelve el  índice de la posición que ocupa en la tupla dicho valor.

En este caso nos devolvería un 2 ya que el 20 esta en esa posición dentro de nuestra tupla.

El método count () sirve para obtener el número de ocurrencias de un elemento en una tupla .

 

También podemos usar la función integrada len () que retorna el número de elementos de la misma.

 

 

Leer Más