summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--es/02_datos.md27
-rw-r--r--es/03_estructura.md14
2 files changed, 25 insertions, 16 deletions
diff --git a/es/02_datos.md b/es/02_datos.md
index b641a79..8400737 100644
--- a/es/02_datos.md
+++ b/es/02_datos.md
@@ -325,10 +325,12 @@ Además, los diccionarios no están ordenados así que no se puede suponer que l
claves siempre van a estar en el orden en el que se introducen.
Para declarar diccionarios es necesario indicar qué claves se quieren usar. Las
-claves son de tipo string. En el caso de los diccionarios, además, se utilizan
-llaves para definirlos. El acceso a sus valores se realiza con los corchetes,
-del mismo modo que en las listas, pero es necesario seleccionar la clave para
-acceder.
+claves pueden ser de cualquier tipo que se considere *hasheable*[^hasheable],
+concepto que se analiza más adelante, aunque normalmente su usan cadenas de
+caracteres como claves.
+
+El acceso a sus valores se realiza con los corchetes, del mismo modo que en las
+listas, pero es necesario seleccionar la clave para acceder.
Los diccionarios, al igual que las listas, son mutables. Como veremos en
seguida.
@@ -336,17 +338,23 @@ seguida.
``` python
>>> {"nombre": "Guido", "apellido": "Van Rossum", "popularidad": 8.0}
{'nombre': 'Guido', 'apellido': 'Van Rossum', 'popularidad': 8.0}
->>> {"nombre": "Guido", "apellido": "Van Rossum", "popularidad": 8.0}["popularidad"]
+>>> {"nombre": "Guido", "apellido": "Van Rossum",
+ "popularidad": 8.0}["popularidad"]
8.0
```
+[^hasheable]: Los diccionarios son una implementación del concepto conocido
+ como *hashmap* o *hash-table*. Su funcionamiento interno requiere que las
+ claves puedan procesarse mediante una función de *hash*.
+
#### Set
-Los *sets* son muy similares a las listas y tuplas, pero con dos
+Los *sets* son muy similares a las listas y tuplas, pero con varias
peculiaridades:
- Sus valores son únicos. No pueden repetirse.
-- No están ordenados
+- No están ordenados.
+- No pueden accederse mediante los corchetes (`[]`).
Estas dos características tan estrictas, lejos de ser limitantes, aportan una
mejora radical en su rendimiento. Buscar elementos en un set es extremadamente
@@ -363,6 +371,11 @@ usan claves.
{'a', 1, 'b'}
```
+Otro de los usos más habituales de los sets es el de aplicar teoría de
+conjuntos (*set* significa «conjunto»). Los sets pueden combinarse forma
+eficiente mediante uniones (*union*), diferencias (*difference*),
+intersecciones (*intersection*) y otros métodos descritos en esta teoría.
+
## Conversión
Ahora que conoces los valores sé que quieres saber cómo cambiar de uno a otro.
diff --git a/es/03_estructura.md b/es/03_estructura.md
index 9d8cd5e..ba9abdb 100644
--- a/es/03_estructura.md
+++ b/es/03_estructura.md
@@ -215,25 +215,21 @@ Como mejor se entiende es con unos ejemplos, en este caso vamos usar la función
inclusive). Usando la ayuda puedes saber más sobre la función `range`.
-> TODO:
-> Mejorar este ejemplo, es demasiado simple
-
``` python
>>> [i**2 for i in range(0, 10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> tuple(i**2 for i in range(0, 10))
(0, 1, 4, 9, 16, 25, 36, 49, 64, 81)
->>> { str(i): i**2 for i in range(0, 10)}
-{'0': 0, '1': 1, '2': 4, '3': 9, '4': 16, '5': 25, '6': 36, '7': 49, '8': 64,
-'9': 81}
-
+>>> { i: i**2 for i in range(0, 10)}
+{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
>>> [i**2 for i in range(0, 10) if i > 5 ]
[36, 49, 64, 81]
```
Como ves, en el caso de los diccionarios es necesario crear las claves también.
-En este caso las creamos convirtiendo el propio número a string con la función
-`str`.
+En este caso las creamos desde el propio número, así que se comportará de forma
+similar a una lista, ya que los índices serán numéricos. Eso sí, las claves no
+estarán ordenadas.
En los primeros ejemplos, de una secuencia de números hemos creado una
secuencia de números al cuadrado. Pero las *list comprehensions* son más