Los diccionarios son una de las herramientas más potentes que nos encontramos en dynamo. Hasta las versiones 2 de dynamo podíamos hacer diccionarios mediante nodos que teníamos disponibles en distintos packages, a partir de esta versión se incorporan directamente en el programa. A partir de esta versión cualquier lista se convierte en un diccionario
Curso Online Programación BIM con Dynamo
¿Qué es un diccionario?
Un diccionario es un conjunto de datos en la que a cada clave se le asocia un valor. Si observas este ejemplo a cada numero de habitación se le asigna un nombre de habitación. Usaremos el nodo Dictionary.ByKeysValues para generar esta asociación
- Aseo
- Cocina
- Habitación
- Salón
- Habitación
Si observas con atención podrás identificar que las claves (los números de habitación) es exclusiva para cada diccionario, es decir no podemos tener dos números de habitación iguales, ya que este es el verdadero valor que las diferencia, mientras que los valores pueden repetirse y tenemos dos habitaciones que se llaman habitación.
Además, el diccionario es en sí una lista, solo que en vez de que los ítems empiezan por 0 hasta el numero de elementos que tengamos, esa lista está compuesta por las claves que le demos. Estas claves no tienen por qué ser numéricas en un diccionario, mientras que en las listas siempre se utilizan números entero (integer en la jerga de programación) como índices de los valores
¿Cómo extraer valores de un diccionario?
Una vez que hayamos generado un diccionario podemos remitirnos a una clave para obtener un valor. Usaremos el nodo Dictionary.ValueAtKey
¿Para que se usan los diccionarios?
Usamos los diccionarios en dynamo para hacer relacionar valores con claves y buscar estos valores de forma ágil sin tener que recurrir de nuevo al valor que tiene en una lista, de esta manera reducimos nuestros scripts sin tener que recurrir constantemente al uso de nodos como get item at index.
Esto también es especialmente útil para diferentes elementos que extraemos de Revit y que necesitamos introducirlo o extraerlo en parámetros a partir de su identificador. En el ejemplo siguiente lo veremos muy claro, para modificar el workset de un elemento tenemos que dar su identificador al introducirlo en el nodo set parameterbyname. Es bastante inusual que conozcamos que el workset Furniture corresponde con 1500 en nuestro proyecto en concreto, pero si hacemos un diccionario de claves valores, cuando nos refiramos a Furniture podemos sacar su id e introducir ese valor para llevarlo al workset que queremos.
Curso Online Programación BIM con Dynamo y Python
Esto con listas sería algo así
¿Cómo escribimos un diccionario con codeblock?
También podemos usar codeblock para escribir un diccionario de forma rápida.
Cómo ahorrar tiempo con la automatización de Proyectos BIM con Dynamo