Anotaciones - Diccionarios

También podría gustarte

Está en la página 1de 5

Los diccionarios: se conocen como matrices asociativas

Deben su nombre a que son colecciones que realcionan una clave y un valor
a diferencia de las cadenas, lista o tuplas que se indexan emdiante
un rango numerico los diccionarios se imdexan con las claves

A diferencia de las listas y tuplas, ya no mantiene un orden al


añadir un nuevo par clave-valor final. El orden de un diccionario
se establece mediante una tabla hash, la cual de manera interna
calcula un funcion hash para cada clave y de acuerdo a ello
los ordena

No puede tener clave duplicadas

Un valor puede contener cualquier tipo de dato, ya sea número,


cadena,lista, tupla e incluso otros diccionarios. Ademas de ello
dicho valor es mutable

dic = {clave1:valor1,clave2:valor2}

dic1 = {'a':[1,2,3], 'b': 2.89, 'c': (4,5,6)}


dic2 = {'nombre': 'Maria', 'amigos': {'a': jorge, 'b' : 'Carlos'}

Una clave puede contener tipos de datos no mutables, estos pueden ser
numeros, cadenas e incluso tuplas

Si una clave es una variable y como valor tiene un numero o cadena este
no afecta al diccionario, ya que la clave es unica y no es mutable

A la hora de trabajar al definir las claves se recomienda el uso de cadenas


siendo asi una representacion formal de un diccionario

COMO ACCEDER A LA CLAVE VALOR DE UN DICCIONARIO

tiene el mismo mecanismo que las listas o tuplas pero en vez de indicar el
indice en forma de rango mumerico colocamos la clave de cada par clave-valor
del diccionario y asi podremos obtener su valor

Si queremos acceder a un valor de mi diccionario y dicho valorrepresente una


lista, tupla o incluso otro diccionario es muy facil, recuerden el numero de
corchetes a utilizar depende de cuantas lista, tupla o diccionarios a emplear

dic = {'a': [1,2,3], 'b':(6,4,9), 'c':{'d':0,'e':100}}


dic1['a'][2] ->3

dic['a'][2] ->3
dic['b'] ->(6,4,9)
dic['b'][0] -> 6
dic['c']['e'] ->100

Si intentamos acceder a una clave que no se encuentre definida en mi diccionario,


se nos arrojará un error

El Slicing no es factible en el uso de diccionario porque no es


una coleccion ordenada

-Como agregar nuevos item (clave-valor)


-como modificar los valores de un diccionario:asignar un valor
dr utiliza el mismo mecanismo a la hora de acceder a un diccionario
y simplemente le asignamos un nuevo valor

dic = {'a':100, 'b':200, 'c':300}


dic['z'] = 500

como el empleo de objetos para instanciar cualquier tipo de dato o coleccion,


este hace uso de la clase dict el cual como parametro, le pasaremos una
representacion de un diccionario y si es factible nos devolverá un diccionario

dic1 = dict(clave1 = 10, clave2 = 20, clave3 = 30)


hace la transformación a fromato de diccionario
dic1 {'clave1':10, 'clave2':20, 'clave3':30}

puede pasar como parametro una instancia una de la clase zip, este recibe dos
parametro
que representa a dos objetos iterables, siendo una cadena, una lista o una tupla
y este devuleve una lista de tuplas node la tupla i-esima, contiene los elementos
i-esimos
de cada objeto iterable

dic2 = dict(zip('abc','123'))
{'a':1,'b':2,'c':3}

dic3 = dict(zip([1,2,4],[6,3,5])
{1:6,2:3,4:5}

dic4 = dic(zip(('a','b','c'),[1,4,6]))

ambos parametros necesitan tener el mismo numero de elementos, de no ser asi este
obtiene un menor numero de elemento de ambos objetos y genera una lista de tuplas
con ese numero

otra forma de usar la instancia dict es pasando una lista de tuplas donde el numero
de elementos de cada tupla debe ser 2

al instanciar un dict sin pasar parametros generamos un diccionario vacio

Método Clear (): Elimina todos los items del diccionario dejando el diccionario
vacio

dic = {'a': [1,2,3], 'b':(6,4,9), 'c':{'d':0,'e':100}}


dic.clear() ->{}

Método copy(): Genera una copia del diccionario original


dic = {'a': [1,2,3], 'b':(6,4,9), 'c':{'d':0,'e':100}}
dic.copy() -> {'a': [1,2,3], 'b':(6,4,9), 'c':{'d':0,'e':100}}

Método fromkeys(iterable,valor):Retorna un nuevo diccionario tomando


como primer parámetro un objeto iterable cual contendrá las claves
y el segundo parametro es un valor que será unico para todas las claves.
De no definir el segundo parametro puesto que es opcional el valor de
cada clave será None
dict.fromkeys(['a','b','c'], 10)
-->{'a':10,'b':10,'c':10}

dict.fromkeys('DevCode',1)
-> {'D':1,'e':1,'v':1,'C':1,'o':1,'d':1,'e':1}

inclusive como primer parametro podemos pasarle un diccionario y este cambiara


el valor de todas las claves

dic = {'a':3, 'b':10, 'hola': 'DevCode'}


dic.fromkeys(dic,'Mundo')
--> {'a':'Mundo', 'hola':'Mundo','b':'Mundo'}

Método get(): Este método retorna el valor de la clave y de no encontrarlos


nos devuleve un onjeto denominado Node, el cual es considerado Vacio

dic = {'a':3, 'hola':'DevCode', 'b':10}


dic.get('a') -> 3

Es recomendable usar este metodo en vez del acceso tradicional ya que


de esta forma evitaremos que nos devuleva un error.

Método pop(): Recibe como parametro una clave del diccionario, lo elimina
y devuleve su valor

dic = {'a':3, 'b':10, 'hola':'DevCode'}


dic.pop('a') -> 3

en el caso de que dicha clave no se encuentre nos devuelve un error

Método popitem(): Elimina un item del diccionario y retornaen una tupla la


clave y el valor. La eliminacion de cada item es de acuerdoal orden en su
tabla hash. simepre elimina el primero

dic = {'a':3, 'b':10, 'hola':'DevCode'}


dic.popitem() -> ('a',3)
dic.popitem() -> ('hola','DevCode')
dic.popitem() -> ('b',10)

Método setdefault(clave,valor):
1-Actua como si fuera un método get

dic = {'a':3, 'b':10, 'hola':'DevCode'}


dic.setdefault('a') -->3

2- Actua como si fueramos a agregar un nuevo item, para ello definimos su


respectiva clave y valor. En el caso de solo definir la clave su valor será
un objeto vacio

Método update(diccionario): Recibe como para otro diccionario y sus items


clave-valor son unidos con el diccionario actual. ademas,aquellas claves iguales
se actualizan por el valor de la clave del diccionario que se le esta pasando
como parametro

dic1 = {'a':3,'b':10,'c':5}
dic2 = {'c':'DevCode, 'd':10,'e':100}

dic1.update(dic2)
--> dic1 = {'a':3,'b':10,'c':'DevCode', 'd':10,'e':100}

Método has_key(clave): solo es empleado en python2, el cual recibe como parametro


una clave y si existe retorna una valor booleano True, caso contrario retorna False

dic1 = {'a':3,'b':10,'c':5}
dic.has_hey('a') --> True

En python 3 ya no se emplea este metodo porque se considera que el metodo


get es más que suficiente, ya que si no existe una clave, este retornará un
objeto None y de acuerdo a la logica de tu problema es más facil su trabajo

Método iteritems, iterkeys e itervalues: Soló son empleados en Python 2


y eran aplicados para convertirlos en iterables y usarlos en la estructura
de control for para sus respectivos recorrido

dic1 = {'a':3,'b':10,'c':5}

si queriamos obtener cada items, clave-valor del diccionario simplemente


usuariamos iteritems y cada elemento que imprimasemos con la palabra
reservada print representaba a una tupla con dos elemento, dende el primero
es la clave y el segundo el valor

for i in dic.iteritems():
print i

('a', 3)
('c', 5)
('b', 10)

de igual manera al iterar susclaves y valores solo utilizabamos


metodos iterkeys y itervalues

for i in dic.iterkeys():
print i
('a')
('c')
('b')

for i in dic.itervalues():
print i
('3')
('5')
('10')

Otros método en Python2 como viewitems(), viewkeys() y viewvalues()


solo retornaban objetos que proporcionaban una visio sobre los items
keys y values respectivamente

dic = {'a':3,'b':10,'c':5}

dic.viewitems() -> dict_items([('a',3),('c',5), ('b',10)]) clave y valor


dic.viewkeys() -> dict_keys(['a','c','b']) clave
dic.viewvalues() -> dict_values([3,5,10]) valor

Tambén podria ser utilizado como iterables en las estructuras de control


como el for

Método items(): Nos retorna una lista de tuplas indicando como primer
elementolaclave y el
segundo elemento el valor del diccionario.

dic = {'a':3,'b':10,'c':5}
dic.items() ->[('a',3), ('c',5),('b',10)]

Método values(): Retorna una lista de elementos, el cual serán los valores de cada
clave
del diccionario

dic = {'a':3,'b':10,'c':5}
dic.values() -> [3,5,10]

Método keys(): Nos retorna una lista de elementos, los cuales son las
claves del diccionario

dic = {'a':3,'b':10,'c':5}
dic.keys() ->['a','c','b']

Al igual que los 6 ateriores metodos, estos tambien se empleaban para


recorerlos en un for

Como nos retorna una lista a diferencia de los 6 métodos anteriores


estos eran modificables según el criterio de programador
en tiempo de ejecución

en Python3
a la hora de recorrerlos en un for no tendrasproblemas
pero si deseas manipular cada clave o cada valor de una
lista esto será muy facil ya que solo debes hacer uso de una instancia
en la clase list como parametro pasaremos nuestro diccionario utilizando
cualquiera de estos tres metodos. de esta manera ya podemos trabajar nuestros
diccionarios como lista

También podría gustarte