Sie sind auf Seite 1von 10

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 DE M A R Z O DE 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 DOR E S
Participar en este sitio
Google Friend Connect
Miembros (15)
Ya eres miembro? Iniciar sesin
A R C H I V O DE L B L OG
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)
DA T OS P E R S ON A L E S
CREAMOSTUWEB
V ER TODO MI PERFI L
P R OGR AMAC I ON E N P Y T H ON
S 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 UE C O R R E S P O ND E A
E S T E L E NG UA J E Y L A S D I F E R E NC 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 UA ND O E S T E M O S
A V A NZ 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 UE G O S C O N E S T A B E L L E Z A D E
L E NG UA 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 mtodo 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 lanzara
18/3/2014 Programacion en python: DICCIONARIOS EN PYTHON
http://pycol.blogspot.com/2009/03/diccionarios-en-python.html 3/10
una excepcin 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 parmetro
o bien se lanza una excepcin.
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 devolvan 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
PUBLI CADO POR CREAMOSTUWEB EN 13: 46
1 6 C OM EN T AR I OS :
Annimo 7 de junio de 2011, 19:00
Realmente excelente, estoy enseando Python en un colegio y
tu pagina es muy muy util. Muchas gracias, Dios te bendiga.
Andrs
Responder
Annimo 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
Annimo 8 de mayo de 2012, 8:57
muy bien!
Responder
Annimo 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
Annimo 8 de mayo de 2012, 8:58
ke onda mau como andas???????
Responder
Annimo 8 de mayo de 2012, 8:59
ok muy bueno
Responder
Annimo 8 de mayo de 2012, 8:59
yo bien y ustedes???
Responder
Annimo 8 de mayo de 2012, 9:00
exelente aka comuinicandonos con la ana jajajajaja
Responder
Annimo 8 de mayo de 2012, 9:04
gracias por resolver estas dudas!!
Responder
Annimo 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 versin 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 ms reciente Entrada antigua
Introduce tu comentario...
Comentar como:
Cuenta de Google
Publicar

Vista previa
Pgina principal
>>>dict
{"saludos": ["hello", "hi"]}
Gracias chaoo
Responder
Annimo 18 de julio de 2013, 0:53
Gracias, me ayudaste con unas dudas! Sigue as!
Responder
Annimo 21 de noviembre de 2013, 17:41
=)
Responder
Annimo 4 de diciembre de 2013, 7:35
muy completo.. gracias
Responder
Annimo 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)

Das könnte Ihnen auch gefallen