Upload
kevin-s-sanchez
View
21
Download
0
Embed Size (px)
Citation preview
18/3/2014 Programacion en python: DICCIONARIOS EN PYTHON
http://pycol.blogspot.com/2009/03/diccionarios-en-python.html 1/10
L U N E S , 2 D E M A R Z O D E 2 0 0 9
DICCIONARIOS EN PYTHON
Los Diccionarios tambien llamados matrices asociativas , ya que son
colecciones que contiene clave:valor ejemplo:
>>>diccionario = {"enero":1,"febrero":2,"marzo":3}
>>>diccionario
{'enero': 1, 'marzo': 3, 'febero': 2}
En la parte de la clave podemos usar cualquier tipo de valor
inmutable: numeros, candenas, booleanos o tuplas menos listas o
diccionarios dado que son mutables. La difrencia que existe entre
diccionarios con la listas o las tuplas es que los valores almacenados
en el diccionario no se le accede a traves de su indice si no atraves
de su clave utilizando el operador de [] asi que de esta forma
nuestros diccionarios no tienen un orden prestablecido :|
>>>diccionario["enero"]
1
de esta misma manera podemos modificar valores
>>>diccionario["enero"]=2
>>>diccionario["enero"]
2
lo dejamos como estaba
>>>diccionario["enero"]=1
>>>diccionario["enero"]
1
bueno en los diccionarios no se usa el slicing, entre otras cosa ya que
los diccionarios no son secuencia, sino Mappings (mapeados,
asociaciones)
S E G U I D O R E S
Participar en este sitioGoogle Friend Connect
Miembros (15)
¿Ya eres miembro? Iniciar sesión
A R C H I V O D E L B L O G
► 2011 (1)
▼ 2009 (12)
► agosto (2)
▼ marzo (5)
EVALUANDO PRIMEROS TEMAS:
ENTRADA DE DATOS EN
PYTHON
SENTENCIAS CONDICIONALES
FUNCIONES EN PYTHON
DICCIONARIOS EN PYTHON
► febrero (5)
D A T O S P E R S O N A L E S
CREA M OSTUW EB
V ER TODO M I PERFIL
P R O G R A M A C I O N E N P Y T H O NS I T I O D E D I C A D O A L A P R O G R A M A C I O N D E P YT HO N , V E R E M O S T O D O L O Q U E C O R R E S P O N D E A
E S T E L E N G U A J E Y L A S D I F E R E N C I A S E N E L P YT HO N 2 . X Y P YT HO N 3 . X P A R A C U A N D O E S T E M O S
A V A N Z A D O S A B O R D A R E M O S T A L V E Z E L D E S A R R O O L L O D E V I D E O J U E G O S C O N E S T A B E L L E Z A D E
L E N G U A J E .
18/3/2014 Programacion en python: DICCIONARIOS EN PYTHON
http://pycol.blogspot.com/2009/03/diccionarios-en-python.html 2/10
FUNCIONES BASICAS :
has_key(k) Comprueba si el diccionario tiene la clave k. Es
equivalente a la sin-
taxis k in D.
valido en python 2.x veamos:
>>>diccionario.has_key("enero")
True
si la clave enero se encuentra en nuestro diccionario nos devuelve
True en caso contrario False, una equivalencia de esto seria:
>>> "enero" in diccionario
True
Debido a esta equivalencia este metodo se convertio en algo
redundante producinedo una ambiguedad innecesaria, debido a esto
la funcion D.has_key(k) fue eliminada de Python 3.x veamos:
valido solo en python 3.x
>>> "enero" in diccionario
True
ahora probemos la funcion has_key(k) en python 3.x
>>>diccionario.has_key('febrero')
Traceback (most recent call last):
File "", line 1, in
AttributeError: 'dict' object has no attribute 'has_key'
como podemos comprobar la funcion has_key fue eliminada de python
3.x pero de igual forma contamos con >>>"enero" in diccionario para
saber si se encuentra una clave de un diccionario :)
get(k[, d]) Busca el valor de la clave k en el diccionario. Es
equivalente a utilizar D[k] pero al utilizar este método podemos
indicar un valor a devolver por defecto si no se encuentra la clave,
mientras que con la sintaxis D[k], de no existir la clave se lanzaría
18/3/2014 Programacion en python: DICCIONARIOS EN PYTHON
http://pycol.blogspot.com/2009/03/diccionarios-en-python.html 3/10
una excepción veamos:
>>>diccionario.get("marzo")
3
esto tambien lo podiamos averiguar de la froma D[k]
>>>diccionario["marzo"]
3
la ventaja de la funcion get(k[, d]) es que podemos indicar un valor
a devolver si la clave no esta:
>>>diccionario.get("abril","valor no encontrado de la clave dada")
>>>'valor no encontrado de la clave dada'
bueno ahi defini un mensaje personalizado pero puede ser tambien
que devuelva un entero o una lista etc.
items() Devuelve una lista de tuplas con pares clave-valor.
python 2.x
>>> diccionario.items()
[('enero', 2), ('marzo', 3), ('febero', 2)]
python 3.x
>>> list[diccionario.items()]
[('enero', 2), ('marzo', 3), ('febero', 2)]
como ven el resutado devuelto es una lista [(clave:valor),......]
keys() Devuelve una lista de las claves del diccionario.
python 2.x
>>>diccionario.keys()
['enero', 'marzo', 'febero']
python 3.x
>>>list(diccionario.keys())
['enero', 'marzo', 'febero']
18/3/2014 Programacion en python: DICCIONARIOS EN PYTHON
http://pycol.blogspot.com/2009/03/diccionarios-en-python.html 4/10
values() Devuelve una lista de los valores del diccionario.
python 2.x
>>> diccionario.values()
[2, 3, 2]
python 3.x
>>> list(diccionario.values())
[2, 3, 2]
pop(k[, d]) Borra la clave k del diccionario y devuelve su valor. Si no
se encuentra dicha clave se devuelve d si se especificó el parámetro
o bien se lanza una excepción.
equivalente tanto para python 2.x como 3.x
>>> diccionario.pop("enero")
2
>>>diccionario
{'marzo': 3, 'febero': 2}
tambien podemos hacer esto y es equivalentes tanto Python 2.x y
3.x:
del diccionario ["marzo"]
>>>diccionario
{'febero': 2}
si queremos eliminar todos los elemntod del dicionario tan solo
hacemos:
>>>diccionario.clear()
{ }
si se fijaron bien los metodos keys(), values() y items() de un
diccionario devolvían listas en key() devolvia una lista de las claves
de un diccionario, de values() devolvia una lista de los valores de un
diccionario y items() devolvia una lista con clave:valor del diccionario
osea el diccionario completo pero en una lista, cada una de esas
funciones tiene una funcion analoga que serian:
keys() analoga iterkeys()
18/3/2014 Programacion en python: DICCIONARIOS EN PYTHON
http://pycol.blogspot.com/2009/03/diccionarios-en-python.html 5/10
values() analoga itervalues()
items() analoga iteritems()
estas funciones analogas devuelven iteradores sobre la misma
secuencia que las anteriores, esto de los iteradores lo explicare con
mas detalle mas adelante.
tambien se fijaron que en python 3.x hacemos en algunas funciones
el llamados de list list(diccionario.values()) para imprimir los datos
buen es que en python 3 se introduce un concepto llamado vista y
vamos a tratar de ver las ventajas que trae esto contra versiones
anteriores de python 3.x ya que cuando hacemos diccionario.keys()
en python3 obtengo es la vista del diccionario veamos:
python 3.x
>>>d=diccionario.keys() #obtengo la vista del diccionario
>>>type(v)
class 'dict_keys'
como ves es de tipo
class 'dict_keys'
>>> iterador= iter(v) # construyo un iterador a partir de la vista (no
del dict!) >>> keys = list(v) # construyo una lista a partir de la vista
como ves es por eso que en python 3.x construimos la lista a partir
de la vista si estamos en una version de python 2.x los iteradores lo
conseguiamos de las funciones homologas (iterkeys(),iteritems() y
itervalues() ) y en python 3.x solo con la funcion iter iterador= iter(v)
veamos con un ejemplo el concepto de vista para Python 3.x y su
funcion iter() que su proposito puede ser mas para compatibilidad
hacia atras con versiones previs a python 3.x
diccionario de ejemlo:
>>>dic={"guido":"python","linus":"linux","richard":"gnu"}
python 2.x
>>>iterador=dic.iterkeys()
18/3/2014 Programacion en python: DICCIONARIOS EN PYTHON
http://pycol.blogspot.com/2009/03/diccionarios-en-python.html 6/10
ahora borremos un elemento del diccionario:
>>>del(dic["linus"])
ahora iteramos:
>>>for key in iterador:
.... print key
....
Traceback (most recent call last):
File "", line 1, in
NameError: name 'iterador' is not defined
bueno nos genera un error ya que nuestro iterador tiene un
diccionario definido y al modificarlo
ya no podemos iterarlo osea recorrerlo con el for :( y ahi es donde
entra el concepto de vista con python3 porque las vista son iterables
:) veamos:
python 3.x
>>>dic={"guido":"python","linus":"linux","richard":"gnu"}
obtenemos la vista:
>>> vista=dic.keys()
ahora borremos un elemento del diccionario
>>>del(dic["linus"])
ahora iteramos con la vista:
>>>for key in vista:
.... print (key)
....
guido
richard
si en python 3.x hubieramos obtenido el iterador atraves de la
funcion iter() asi iterador=iter(dic.keys()) si hacemos asi en python 3
tendriamos un comportamiento similar a Python 2.x y es el de que
ese iterador no soporta modificacion durante la ejecucion.
18/3/2014 Programacion en python: DICCIONARIOS EN PYTHON
http://pycol.blogspot.com/2009/03/diccionarios-en-python.html 7/10
Bueno creo que con lo que llevamos hasta aqui de python que son los
tipos de datos operadores, listas, tuplas y diccionarios que era algo
fundamental antes de iniciar con funciones, sentencias condicionales
y bucles, que lo veremos ya en el proximo post. vamos despacios
porque con el lanzamiento de python3 en cada tema vamos
mostrando como se hace en python 2.x y ahora como se hace en
python 3.x bueno no es todo pero donde hallan cambios lo ire
indicando para que los que andan practicando vean el porque de las
excepciones que nos arroja, bueno cualquier duda me la hacen saber
bye.
Write By Hackchan
PUBLICADO POR CREAM OSTUWEB EN 13:46
1 6 C O M E N T A R I O S :
Anónimo 7 de junio de 2011, 19:00
Realmente excelente, estoy enseñando Python en un colegio y
tu pagina es muy muy util. Muchas gracias, Dios te bendiga.
Andrés
Responder
Anónimo 27 de octubre de 2011, 18:15
Como seria un diccionario que en la clave contiene tuplas??
Responder
c@t_green 20 de marzo de 2012, 10:08
komo imprimo la frases del dicionario y su significado
palabra(significado)
y q me kede asi
Responder
Anónimo 8 de mayo de 2012, 8:57
muy bien!
Responder
Anónimo 8 de mayo de 2012, 8:58
18/3/2014 Programacion en python: DICCIONARIOS EN PYTHON
http://pycol.blogspot.com/2009/03/diccionarios-en-python.html 8/10
sale graciaas
Responder
Anónimo 8 de mayo de 2012, 8:58
ke onda mau como andas???????
Responder
Anónimo 8 de mayo de 2012, 8:59
ok muy bueno
Responder
Anónimo 8 de mayo de 2012, 8:59
yo bien y ustedes???
Responder
Anónimo 8 de mayo de 2012, 9:00
exelente aka comuinicandonos con la ana jajajajaja
Responder
Anónimo 8 de mayo de 2012, 9:04
gracias por resolver estas dudas!!
Responder
Anónimo 11 de mayo de 2012, 1:42
Hola podria hacer una pregunta?
Responder
Chu-k0 14 de septiembre de 2012, 11:46
Hola gracias por los tips de los diccionarios realmente útil ;)
aparte el plus de mostrar diferencias entre cada versión te
luciste man ;)
Entre porque queria hacer un diccionario con varios valores,
ahora me quedo claro que la clave no puede ser lista, pero los
valores no mencionaste restricciones así que hize la prueb ay
si funciono ;)
>>>lista = ["hello", "hi"]
>>>dict = {"saludos": lista}
18/3/2014 Programacion en python: DICCIONARIOS EN PYTHON
http://pycol.blogspot.com/2009/03/diccionarios-en-python.html 9/10
Entrada más reciente Entrada antigua
Introduce tu comentario...
Comentar como: Cuenta de Google
Publicar
Vista previa
Página principal
>>>dict
{"saludos": ["hello", "hi"]}
Gracias chaoo
Responder
Anónimo 18 de julio de 2013, 0:53
Gracias, me ayudaste con unas dudas! Sigue así!
Responder
Anónimo 21 de noviembre de 2013, 17:41
=)
Responder
Anónimo 4 de diciembre de 2013, 7:35
muy completo.. gracias
Responder
Anónimo 10 de febrero de 2014, 7:50
gracias, esta claro y bien documentado.
Responder
18/3/2014 Programacion en python: DICCIONARIOS EN PYTHON
http://pycol.blogspot.com/2009/03/diccionarios-en-python.html 10/10
Suscribirse a: Enviar comentarios (Atom)