Saltar al contenido

Rellenar y Usar un Diccionario

Introducción

Un diccionario es un tipo especial de variable global que crea una matriz de pares clave-valor. Un caso de uso frecuente es como una lista de referencias cruzadas, como cuando una fuente de datos proporciona una clave y un objetivo requiere un valor basado en esa clave.

Rellenar un Diccionario

Una mejor práctica requerida es inicializar primero el diccionario usando el Dict función:

$dict.mylist = Dict()

A continuación, se puede crear una entrada de diccionario utilizando el botón AddToDict función:

AddToDict(<dict name>,<key>, <value>)

Hay escenarios en los que simplemente queremos capturar las claves en el diccionario y cualquier valor es irrelevante. En ese caso, es aceptable usar:

AddToDict(<dict name>, <key>, true)

Otro escenario es donde el valor en sí mismo es una lista, por lo que primero queremos verificar si la entrada del diccionario existe y luego obtener el valor y volver a agregarlo al diccionario. Esto también se puede utilizar para sumar valores. HasKey se utiliza en este caso:

my_value = <data from source>;
my_key = <data from source>;
If(HasKey($dict.mylist,my_key)  // Check if my_key is in the dictionary
, // If true
value = $dict.mylist[my_key]; // Get the original value
new_value = value + “|” + my_value; // Append the new value
AddToDict($dict.mylist,new_value); // Write the new appended value back to the dictionary
, // If false
AddToDict($dict.mylist,my_value);
);

Leer un Diccionario

Si se intenta leer un valor de un diccionario y la clave no existe, se trata como un error. Una mejor práctica es usar siempre primero HasKey para verificar que la clave existe. Consulte la tercera línea del código anterior para ver un ejemplo. Como las entradas del diccionario siempre están en orden alfabético y siempre son únicas, usando AddToDict con una clave existente sobrescribirá la entrada.

Los diccionarios se leen con frecuencia para generar una lista de datos que se lee con un While bucle:

arr = Array();
arr = KeyList($dict.mylist);
i = 0;
While(i < Length(arr),
value = $dict.mylist[i];
<some action>
i++);

Los diccionarios también se utilizan en condiciones de transformación como filtro. Supongamos que se llena un diccionario y una transformación necesita leer un origen y solo procesar registros si el valor del diccionario está en el registro. La condición de la transformación de destino tendría un secuencia de comandos como este:

pass = true;
If(!HasKey($dict.mylist,<mapped value from source record>), pass = false);
pass;

El alcance de los diccionarios, como todas las variables globales, está limitado a la instancia del subproceso de operación. Pero no son seguros para subprocesos. Tenga cuidado al completar un diccionario cuando use la opción asincrónica con RunOperation. El diccionario no retendrá sus datos entre varios subprocesos.