# Trabajar con matrices y diccionarios

**Arreglo** — es una estructura de datos que almacena una colección de valores (llamados elementos del arreglo), cada uno identificado por un índice. Se define usando corchetes \[]. Por ejemplo, la instrucción q = \[] significa que la variable q contiene un arreglo vacío. Si q = \[2, 5, 7, 4, 9], entonces el arreglo contiene 5 elementos — esta es su longitud. Los índices de los elementos, que representan sus posiciones en el arreglo, comienzan desde 0. Así, el índice del elemento "2" es 0, y el índice del elemento "4" en nuestro arreglo es 3.

<figure><img src="/files/42e4dd1e448d5ccdb7153837e6d3a5533e0af9f9" alt=""><figcaption></figcaption></figure>

**Ejemplo:** array=\[1,2,3,4] o array1=\["madre","padre","hijo","hija"]

**Un ejemplo de acceso a un elemento de un arreglo:** array\[1] (devuelve el valor 2)

**Diccionario** — es una estructura de datos que representa un conjunto especialmente organizado de elementos que almacenan datos. Todos los datos se almacenan en forma de pares clave-valor. El acceso a los elementos de datos se realiza usando la clave. Una clave siempre debe ser única dentro de un solo diccionario, mientras que los datos (valores) pueden duplicarse si es necesario.

**Ejemplo:** {"SLU":12345,"Name":"Camiseta de hombre, blanca","Size":50,"Price":1000}

**Un ejemplo de acceso a un elemento de un arreglo:** dictionary\["Arreglo"] (devuelve el valor 12345)

Tanto los arreglos como los diccionarios pueden tener estructuras complejas o anidadas — es decir, pueden contenerse unos a otros. Por ejemplo:

un arreglo de diccionarios: products=\[{"SKU":12345,"Name":"Camiseta de hombre, blanca","Size":50,"Price":1000},{"SKU":12346,"Name":"Camiseta de hombre, blanca","Size":52,"Price":1000}]

&#x20;La expresión `s = {}` significa que la variable s contiene un diccionario que no tiene elementos. Podemos poner en él un par clave-valor, o incluso varios: `s = {"key1":"value1", "key2":"value2","key3":"value3"}` Cada clave y valor va entre comillas, entre la clave y el valor se coloca dos puntos, y los pares clave-valor se separan con comas.

Los arreglos y diccionarios pueden estar anidados. Veamos un ejemplo:

`rainbow = [rojo, naranja, amarillo, verde, azul claro, azul, morado]` - este es un arreglo.

Si escribimos&#x20;

rainbow = {"every":"rojo","hunter":"naranja","wants":" amarillo","know":"verde","where":"azul claro","sits":"azul","pheasant":"morado"}

\- obtenemos un diccionario

Si observamos más de cerca el arcoíris, podemos ver, por ejemplo, que el color azul claro es más complejo y consiste en turquesa, azul claro y azul oscuro. Escribamos: `azul claro = [turquesa,azul claro, azul oscuro]`. Ahora incrustemos nuestro arreglo “blue” en el diccionario “rainbow”:

rainbow = {"first\_color":"<mark style="color:predeterminado;background-color:yellow;">rojo</mark>","<mark style="color:predeterminado;background-color:blue;">second\_color</mark>":"<mark style="color:predeterminado;background-color:yellow;">naranja</mark>","<mark style="color:predeterminado;background-color:blue;">third\_color</mark>":"<mark style="color:predeterminado;background-color:yellow;">amarillo</mark>","<mark style="color:predeterminado;background-color:blue;">forth\_color</mark>":"<mark style="color:predeterminado;background-color:yellow;">verde</mark>","<mark style="color:predeterminado;background-color:blue;">sixth\_color</mark>":"<mark style="color:predeterminado;background-color:yellow;">azul</mark>","<mark style="color:predeterminado;background-color:blue;">last\_color</mark>":"<mark style="color:predeterminado;background-color:yellow;">morado</mark>"}

Entonces, ¿cómo especificamos la dirección de un elemento, por ejemplo “turquesa”?&#x20;

Y en los arreglos, la dirección se hace por <mark style="color:predeterminado;background-color:yellow;">**índice**</mark>, así que la dirección del elemento "turquesa" es 0.

&#x20;Resumamos esto: **\["where"]\[0]** - es la dirección del elemento "turquesa".

<div data-with-frame="true"><figure><img src="/files/844ab5745d4f4d7ce26288e4fe3b3f5fe957eec3" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/249a89b64e1281bd432d9ed74bea66c21a3ecc7a" alt="" width="375"><figcaption></figcaption></figure></div>

## Cómo trabajar con direcciones (JSON)

Al recibir respuestas de servicios de terceros a través de API, lo más frecuente es obtener JSON, que representa un diccionario. Muy a menudo, necesitamos almacenar un valor específico de este diccionario en una variable.

La mejor manera de entender el principio de direccionamiento en JSON es mediante un ejemplo:<mark style="color:predeterminado;background-color:green;">{</mark><mark style="color:predeterminado;background-color:orange;">"suggestions"</mark>: <mark style="color:predeterminado;background-color:red;">\[{"value": "Dirham", "unrestricted\_value": "Dirham", "data": {"code": "784", "strcode": "AED", "name": "Dirham", "country": "UAE"}}]</mark><mark style="color:predeterminado;background-color:green;">}</mark>&#x20;

Aquí tenemos un diccionario que contiene un único par clave-valor **suggestions** - la clave del arreglo: `[{"value": "Dirham", "unrestricted_value": "Dirham", "data": {"code": "784", "strcode": "AED", "name": "Dirham", "country": "UAE"}}]`

El valor de la **suggestions** clave es un arreglo con un solo elemento — un diccionario:  `{"value": "Dirham", "unrestricted_value": "Dirham", "data": {"code": "784", "strcode": "AED", "name": "Dirham", "country": "UAE"}}` **suggestions|0** - es la clave del primer (y único) elemento del arreglo.`{"value": "Dirham", "unrestricted_value": "Dirham", "data": {"code": "784", "strcode": "AED", "name": "Dirham", "country": "UAE"}}`

**suggestions|0|value** - es la clave del valor "rublo bielorruso"

{"suggestions": \[{"<mark style="color:predeterminado;background-color:orange;">value</mark>": "Dirham", "unrestricted\_value": "Dirham", "data": {"code": "784", "strcode": "AED", "name": "Dirham", "country": "UAE"}}]}

La ruta de clave más larga en este JSON es: **suggestions|0|data|strcode** - es la clave de AED

<div data-with-frame="true"><figure><img src="/files/a1b6fe9f739a28ddaf8de09dd298985684ea03df" alt="" width="563"><figcaption></figcaption></figure></div>

{"suggestions": \[{"value": "Dirham", "unrestricted\_value": "Dirham", "data": {"code": "784", "<mark style="color:predeterminado;background-color:orange;">strcode</mark>": "<mark style="color:predeterminado;background-color:red;">AED</mark>", "name": "Dirham", "country": "UAE"}}]}

Las claves se separan con una barra vertical. Si el JSON contiene un arreglo, el acceso a sus elementos se hace por índice, comenzando desde 0, y también se escribe usando una barra vertical. La indexación de arreglos comienza en 0.

En las direcciones, los números se tratan igual que las cadenas y viceversa. Por ejemplo, '6' y 6 se consideran iguales.

Además de las respuestas de API, los arreglos y diccionarios también pueden usarse para almacenar datos de forma cómoda.

Por ejemplo, si necesitas restringir el acceso a una sección específica de un bot a ciertos usuarios, puedes guardar sus IDs en un arreglo, colocarlo en una variable global del proyecto y usarlo en condiciones de bloques o lógica de flechas para comprobar si el ID del usuario está incluido en el arreglo.

Otro ejemplo es cuando necesitas almacenar el número de puntos de cada jugador en un juego por equipos. Puedes usar un diccionario para esto, donde las claves son IDs de usuario y los valores son sus puntos.

A veces, es necesario modificar un arreglo o un diccionario. Las funciones descritas en este artículo están diseñadas exactamente para ese propósito. La mayoría de los métodos descritos a continuación funcionan tanto con arreglos como con diccionarios.

## Trabajar con arreglos

### Cómo crear un arreglo

Creación de arreglo - declarar un arreglo

**array\_name = \[]**

### Cómo limpiar un arreglo

Limpiar un arreglo es esencialmente lo mismo que declarar un arreglo vacío:

**array\_name = \[]**

### Cómo acceder a un elemento de un arreglo

<details>

<summary>Descripción</summary>

**name\[index] -** acceso a un elemento de un arreglo por índice o por valor

</details>

<details>

<summary>Ejemplo</summary>

Veamos algunos ejemplos de trabajo con arreglos:

**Ejemplo de acceso a un elemento de un arreglo por su índice:**

<div data-with-frame="true"><figure><img src="/files/624c783310911c2d783b4b7b306638b743857ea6" alt="" width="563"><figcaption></figcaption></figure></div>

#### Ejemplo de obtención del último elemento del arreglo:

<div data-with-frame="true"><figure><img src="/files/eaa09ff562d80ddfbda37a1f53bd9bc0c50d6733" alt="" width="563"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
/*Acceso por índice*/
arrayI = [1, "2", 3, 4, 5]
k=arrayI[3]
/*Acceso por índice desde un arreglo anidado*/
arrayV = [[1, "2", 4, 5], "2", 3, 4, 5]
v=arrayV[0][1]

/*Ejemplo de obtención del último elemento*/
array = [1, "2", 3, 4, 5]
/*Obtener el último elemento del arreglo*/
last = array[-1]
```

</details>

### Cómo reemplazar un valor en un arreglo

<details>

<summary>Descripción</summary>

**name\[index] =** **value** - reemplazar un elemento del arreglo por un índice dado

</details>

<details>

<summary>Ejemplo</summary>

**Ejemplo:**

Para reemplazar el valor de un elemento específico del arreglo, usa la siguiente sintaxis: *array\_name\[index] = value*

<div data-with-frame="true"><figure><img src="/files/58fe946cc884c38d91f3caaa59ab11c34810ca87" alt="" width="563"><figcaption></figcaption></figure></div>

Respuesta:

<div data-with-frame="true"><figure><img src="/files/e0e844c91d7331ea982a91b7bb9a8818c16b41ce" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
array = [1, "2", 3, 4, 5]

/*Reemplazar en arreglo\diccionario*/
array[2] = 888

/*Agregar en diccionario   dicts['key'] = 'VVVVVVVVVVV'*/
dicts['m']=new

/*Reemplazar en arreglo\diccionario con el número*/
array[3] = int('888')
dicts['a'] = int('555')
```

</details>

### Cómo comprobar si un elemento está en un arreglo

<details>

<summary>Descripción</summary>

**in\_array(mass, value)** - para comprobar si un elemento existe en un arreglo.

**Parámetros:** \ <mark style="color:rojo;">!</mark> **mass -** arreglo \ <mark style="color:rojo;">!</mark> **value -** valor para buscar

Devuelve True o False según si el valor se encuentra o no.

</details>

<details>

<summary>Ejemplo</summary>

Ejemplo:

<div data-with-frame="true"><figure><img src="/files/e0ae0f8d39e5e5babe452097a6e7d114df508de5" alt="" width="563"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
s = ["Mike", "Peter", "Helen"] 
q = if(in_array(s, 'Ann'), 'Encontrado', 'Otra cadena')
```

</details>

### Cómo averiguar la longitud del arreglo

<details>

<summary>Descripción</summary>

**arr\_len(mass)** - para averiguar la longitud del arreglo

Parámetro:\ <mark style="color:rojo;">!</mark> **mass -**  *arreglo*&#x20;

Resultado: Devuelve un número - la longitud del arreglo.

{% hint style="warning" %}
¡Ten cuidado al pasar parámetros a la función! Si se llama sin parámetros, devuelve 0; si el parámetro no es ni un arreglo ni un diccionario, devuelve -1.
{% endhint %}

</details>

<details>

<summary>Ejemplo</summary>

Ejemplo de uso:

<div data-with-frame="true"><figure><img src="/files/2ace289860cd131ecd158c6acbfd0eac04807865" alt=""><figcaption></figcaption></figure></div>

Resultado:

<div data-with-frame="true"><figure><img src="/files/cd0cefd974bbf5307b2133e5a02b7909b8a0941f" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
s = ["Mike", "Peter", "Helen"] 
q = if(arr_len(s) > 5, 'El grupo está lleno', '¡Únete a nuestro equipo!')
```

</details>

### Cómo insertar un elemento al final de un arreglo?

<details>

<summary>Descripción</summary>

**append(mass, element, priznak)** - para insertar un elemento al final de un arreglo.&#x20;

Parámetros:

<mark style="color:rojo;">!</mark> **mass -** arreglo\ <mark style="color:rojo;">!</mark> **element -** elemento a insertar\
**priznak** - indicador que señala si es un arreglo o un diccionario

Devuelve el arreglo con el valor añadido al final. Para actualizar el arreglo original, usa la asignación: **mass = append(mass, element, priznak)**&#x20;

{% hint style="warning" %}
&#x20;Por defecto, los datos se insertan como cadenas. **Si necesitas insertar un arreglo o diccionario, pasa un parámetro adicional True**. Esto indica que estás insertando JSON.
{% endhint %}

</details>

<details>

<summary>Ejemplo</summary>

Ejemplo de uso:

<div data-with-frame="true"><figure><img src="/files/ec8c91c641d90a73023ace240f72eac319f1d081" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/edd6e60d7208291f5917f978239da99e179a45a7" alt="" width="375"><figcaption></figcaption></figure></div>

Ejemplo de agregar y eliminar de un arreglo:

<div data-with-frame="true"><figure><img src="/files/695c4d0c2df92ab3ed40cdd6b188519b03f02da9" alt="" width="563"><figcaption><p>En este ejemplo, se agrega un elemento al arreglo project.vibpzdr, y el valor <code>p</code> se elimina del arreglo project.pzdr</p></figcaption></figure></div>

Ejemplo de creación de un arreglo con arreglos dentro:

<div data-with-frame="true"><figure><img src="/files/c1ad3f3e2abffc0560f1bce2028cd5caee8ea19c" alt="" width="563"><figcaption></figcaption></figure></div>

El resultado de la ejecución de la función:

<div data-with-frame="true"><figure><img src="/files/b17c1d2fa3454088f0e35b11b17af1c4f4a267f7" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
s = ["Mike", "Peter", "Helen"]
q = append(s, 'Max')
```

</details>

### Cómo insertar un valor en una posición específica de un arreglo

<details>

<summary>Descripción</summary>

**insert(mass, index, value, priznak)** - para insertar un elemento en una posición específica del arreglo.

Parámetros: \ <mark style="color:rojo;">!</mark> **mass -** arreglo\ <mark style="color:rojo;">!</mark> **index -** posición de inserción\ <mark style="color:rojo;">!</mark> **value -** value\
**indicador** - indicador de si se agrega a un arreglo o a un diccionario.

Resultado:\
Devuelve un arreglo con el valor añadido en la posición especificada. En otras palabras, para añadir el valor al mismo arreglo, usa el comando en la siguiente forma:  **mass = insert(mass, index, value, indicator)**&#x20;

{% hint style="warning" %}
Por defecto, los datos se insertan como cadenas. **Si necesitas insertar un arreglo o diccionario, pasa un parámetro adicional True**. Esto indica que estás insertando JSON..
{% endhint %}

</details>

<details>

<summary>Ejemplo</summary>

Ejemplo:

<div data-with-frame="true"><figure><img src="/files/684ffc4210a108f0320827ae172e534cc6693b31" alt="" width="563"><figcaption></figcaption></figure></div>

Resultado:

Veamos un ejemplo más complejo: agregar un diccionario t a un arreglo s:

<figure><img src="/files/5b8f2d62c9b66121c938ebc76f2646e8017523d3" alt=""><figcaption></figcaption></figure>

En la función, indicamos que queremos agregar un diccionario en la posición 1. Veamos el resultado:

<figure><img src="/files/46d2d74b91f242e3f139b7f9ceb23a3b05bd66d2" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
s = ["Mike", "Peter", "Helen"]
q = insert(s, 1, 'Max')
```

</details>

### Cómo eliminar un elemento del arreglo

del() | del | remove()

<details>

<summary>Descripción</summary>

<mark style="color:predeterminado;background-color:blue;">**Por índice**</mark>

**del(mass, key)** - elimina un elemento del arreglo por su índice.&#x20;

Parámetros: \ <mark style="color:rojo;">!</mark> **mass -** nombre del arreglo;\ <mark style="color:rojo;">!</mark> **key -** el índice del valor que se va a eliminar

Devuelve un nuevo arreglo con el elemento eliminado; el arreglo original permanece sin cambios. Para eliminar y actualizar el mismo arreglo, usa un comando como: \
**mass = del(mass, key)**

{% hint style="warning" %}
Si tu arreglo contiene números y quieres eliminar un elemento por valor, usa la función remove().&#x20;
{% endhint %}

**del name\['index']** - eliminación de un valor de un arreglo por índice

Parámetros: \ <mark style="color:rojo;">!</mark> **name-** nombre del arreglo;\ <mark style="color:rojo;">!</mark> **index-** el índice del valor que se va a eliminar

<mark style="color:predeterminado;background-color:blue;">Por valor</mark>

**remove(mass, value)** - para eliminar un valor de un *arreglo*.&#x20;

Parámetros: \ <mark style="color:rojo;">!</mark> **mass -** nombre del arreglo; \ <mark style="color:rojo;">!</mark> **value -** el valor a eliminar del arreglo

Resultado:\
Devuelve un arreglo modificado, dejando el arreglo original sin cambios. Para eliminar un elemento y actualizar el mismo arreglo, usa el comando en la siguiente forma:\
**mass = remove(mass, key)**

</details>

<details>

<summary>Ejemplos</summary>

Ejemplo de eliminación de un elemento por índice:

<div data-with-frame="true"><figure><img src="/files/cd2e4c5fb4c666283d45da682cd3c08d559c8fc6" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/be509da6927da1a0c4812f31fc3d1aeabbaa2a4f" alt="" width="375"><figcaption></figcaption></figure></div>

Ejemplo de eliminación de un elemento de un arreglo por su valor:

<div data-with-frame="true"><figure><img src="/files/6644ae7e7718d98764492366771c301e58c2e187" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/e2ffc2b85888e87d253d922cf85b9428885e59d6" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
/*Eliminación de un elemento del arreglo por su índice:*/
array = ["1",2, 3, "4"]
del array['1']

array1 = ["1",2, 3, "4"]
array1=del(array1,0)


/*Eliminación de un elemento del arreglo por su valor:*/
array = ["1",2, 3, "4"]
array=remove(array, '4') 

array1 = ["1",2, 3, "4"]
array1=remove(array1, 2) 
```

</details>

### Cómo obtener la posición de un elemento en un arreglo

<details>

<summary>Descripción</summary>

**index(mass, value)**

Parámetros: \ <mark style="color:rojo;">**!**</mark> **mass -** nombre del arreglo \ <mark style="color:rojo;">**!**</mark>**&#x20;value -** el valor cuya posición necesita determinarse.

Si el elemento no está en el arreglo, la función devolverá -1.

</details>

<details>

<summary>Ejemplos</summary>

Ejemplo de determinación de la posición de un elemento en un arreglo:

<div data-with-frame="true"><figure><img src="/files/d2c7713b354b3dc06034290b33336467e213e47b" alt="" width="563"><figcaption></figcaption></figure></div>

Veamos más de cerca el resultado en detalle:

<div data-with-frame="true"><figure><img src="/files/d9cb285ec6adb38ecce5b0dd9cb0aa8982f239b8" alt="" width="375"><figcaption></figcaption></figure></div>

Como podemos ver, dado que el número 5 no está en el arreglo, la función devolvió -1.

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
array = ["1",2, 3, "4"]
search1=index(array,"1")
search2=index(array,5)
```

</details>

### Cómo convertir un arreglo a texto legible por humanos

<details>

<summary>Descripción</summary>

**massive\_to\_text(massive, header, numbered,delimiter1,delimiter2)**

Parámetros:

<mark style="color:rojo;">**!**</mark>**&#x20;massive** – el arreglo a mostrar,\
**header** – un título que aparecerá al inicio de la salida\
**numbered** – si se pasa cualquier valor, los elementos del arreglo se numerarán\
**delimiter1** – el carácter colocado al final de cada línea de elemento (el valor predeterminado es ‘;’),\
**delimiter2** – el carácter usado después del número del elemento cuando el numerado está habilitado (el valor predeterminado es ‘)’)<br>

</details>

<details>

<summary>Ejemplos</summary>

Ejemplo simple:

Como resultado, el arreglo se mostrará como una lista numerada:

<div data-with-frame="true"><figure><img src="/files/79f41673a932fa9323b278b4ddb1f90f1763921f" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
Array1 = [1, 2, 3, "a", "b", "c"] 
text = array_to_text(Array1, 'title', 1) 
```

</details>

### Cómo excluir un arreglo de otro

<details>

<summary>Descripción</summary>

**except\_arr(mas1, mas2)**&#x20;

Parámetros:

<mark style="color:rojo;">**!**</mark>**&#x20;mas1** - el arreglo del que se excluirán elementos,\ <mark style="color:rojo;">**!**</mark>**&#x20;mas2** - el arreglo que contiene los elementos que se excluirán

</details>

<details>

<summary>Ejemplos</summary>

Veamos el ejemplo:

<div data-with-frame="true"><figure><img src="/files/3507248111b125c15e6d82b2132dc2b9fde68c31" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/909dcb315387b600d51ef4e0bc71e92377f9df2d" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
s1 = [1, 2, 3]
s2 = [2, 3]
s3 = except_arr(s1, s2)
```

</details>

### Cómo encontrar la intersección de arreglos

<details>

<summary>Descripción</summary>

**cross\_arr(mas1, mas2)**

Parámetros:

<mark style="color:rojo;">**!**</mark>**&#x20;mas1** - el arreglo en el que buscar\ <mark style="color:rojo;">**!**</mark>**&#x20;mas2** - el arreglo que contiene los elementos que se buscan

</details>

<details>

<summary>Ejemplos</summary>

<div data-with-frame="true"><figure><img src="/files/af8aabd8cb242c43eead99ce0d5f6a681674469b" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/4bd3d20c3be72603145d04cadd0b919df3c717d2" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
s1 = [1, 2, 3]
s2 = [2, 3]
s3 = cross_arr(s1, s2)

mas1 = ["no", "excepto,", "que", "todo", "está", "tan", "simple.", "gracias"]
mas2 = ["todo", "gracias"]
mas3 = cross_arr(mas1, mas2)
```

</details>

### **Cómo fusionar arreglos**

<details>

<summary>Descripción</summary>

No existe una función integrada específicamente para fusionar arreglos, pero se puede hacer fácilmente:

Para combinar arreglos, realiza una concatenación de cadenas, luego reemplaza ']\[' por una coma ','

</details>

<details>

<summary>Ejemplos</summary>

Este es un ejemplo en el campo de la Calculadora

<div data-with-frame="true"><figure><img src="/files/6ed8cf4b62f520b92357a6e02c5458ae7557b900" alt="" width="563"><figcaption></figcaption></figure></div>

Este es un ejemplo de un bot en funcionamiento

<div data-with-frame="true"><figure><img src="/files/80988a32d753481edef9c9958a3f63f62b1933e8" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
a = [1,2,3,4] 
b = [5,6,7] 
sum = a + b 
answer = replace(sum, '][', ',') 
```

</details>

### Cómo sumar los elementos de un arreglo

<details>

<summary>Descripción</summary>

**sum\_array(array)**

**Parámetros:**

**arreglo** - el arreglo cuyos elementos deben sumarse

{% hint style="warning" %} <mark style="color:rojo;">**¡Atención!**</mark>**&#x20;La función trabaja con arreglos de un formato específico.**

Formatos aceptados: - \[1,2,3,4] o ‘\[1,2,3,4]’. \
Si el arreglo contiene números representados como cadenas, deben ir entre comillas dobles; por ejemplo, \[1,2,3,”-4”].  \
Si el arreglo contiene cadenas alfabéticas, el cálculo fallará.

Ejemplo de uso incorrecto:\
mas = \[1,2,3,"a"] \
result = sum\_array(mas)

Esto resultará en un error: **el arreglo tiene elementos no compatibles**
{% endhint %}

</details>

<details>

<summary>Ejemplos</summary>

<div data-with-frame="true"><figure><img src="/files/843fa11416f59ab998ade73c2454d45d70a53d33" alt="" width="563"><figcaption></figcaption></figure></div>

Resultado:

<div data-with-frame="true"><figure><img src="/files/dbd600b4289cd83c0363cf9ce3918c1d5f689e00" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/8c911966b36d00ec89a0caba1789359067104a9c" alt="" width="563"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
mas = [1,2,3,4] 
result = sum_array(mas) 
```

</details>

### Cómo mezclar los elementos de un arreglo

<details>

<summary>Descripción</summary>

**shuffle\_massive(massive**

Parámetros:

**massive** - el arreglo cuyos elementos deben mezclarse.

</details>

<details>

<summary>Ejemplos</summary>

<div data-with-frame="true"><figure><img src="/files/eeaf5faece073944a748b440532b6c247e48d0b6" alt="" width="563"><figcaption></figcaption></figure></div>

Resultados de la ejecución de la función:

<div data-with-frame="true"><figure><img src="/files/a085d5d83c621e77023ce8d457d4cfac785f1b51" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
Massive1 = [1, 2, 3, "a", "b", "c"]
Massive2 = shuffle_massive(Massive1) 
```

</details>

### Para ordenar arreglos y diccionarios&#x20;

sort() | sort\_by\_value()

<details>

<summary>Descripción</summary>

<mark style="color:predeterminado;background-color:blue;">**Ordenamiento en un arreglo o un diccionario**</mark>&#x20;

**sort(mass, b)** - ordena un arreglo por valor y un diccionario por clave

Parámetros:

<mark style="color:rojo;">**!**</mark>**&#x20;mass** - arreglo/diccionario\
**b** - orden de clasificación (False – ascendente (predeterminado), True – descendente)

<mark style="color:predeterminado;background-color:blue;">**Ordenar diccionario por su valor**</mark>

**sort\_by\_value(dict, b) -** ordena un diccionario por valores.

Parámetros:\ <mark style="color:rojo;">**!**</mark>**&#x20;dict**- diccionario\
**b** - orden de clasificación (False – ascendente (predeterminado), True – descendente)

</details>

<details>

<summary>Ejemplo</summary>

Ejemplo de ordenar un arreglo en orden descendente y un diccionario en orden ascendente:

<div data-with-frame="true"><figure><img src="/files/993308cec3e33056807cec85befce0391399e6f1" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/5c46bde4550e620344a7d1d632fd165945e15f5d" alt="" width="375"><figcaption><p>resultado de la ordenación</p></figcaption></figure></div>

Ordenar un diccionario por valores:

<figure><img src="/files/47bbe6c609daa1872862cf50b5a29d8e77ac375b" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="/files/0a7ad80666518f36532c6e45c1721b1e31aabba9" alt="" width="375"><figcaption><p>resultado de la ordenación</p></figcaption></figure>

</details>

### Convertir un arreglo/diccionario en botones

**tools\_make\_button\_str\_checker() | tools\_check\_user\_input()**

<details>

<summary>Descripción</summary>

<mark style="color:predeterminado;background-color:blue;">**Convertir un arreglo/diccionario en botones**</mark>

tools\_make\_button\_str\_checker(values\_list, key, in\_line, button\_type, checker\_with\_numbers)

Parámetros:

<mark style="color:rojo;">**!**</mark> values\_list - un arreglo de cadenas o diccionarios cuyos datos se usarán para construir un teclado o una lista numerada

key - la clave por la que se hará la selección desde un arreglo de diccionarios

in\_line - número de botones por fila (predeterminado: 1)

button\_type - tipo de botones (predeterminado: teclado de respuesta).\
Valores posibles:\
0 - teclado de respuesta,\
1 - teclado en línea (botones en texto)

checker\_with\_numbers - si se deben agregar números de botón al arreglo "checker".\
Valores posibles:\
0 - no agregar números,\
1 - agregar números (predeterminado: 1 – agregar números)

Resultado de la función: un diccionario con la forma:

{"**numbered\_list**":"1. Camisetas\n2. Pantalones cortos\n3. Calcetines\n4. Gorras\n","**buttons**":\[{"type":"inline","text":"Camisetas","line":0,"index\_in\_line":0},{"type":"inline","text":"Pantalones cortos","line":0,"index\_in\_line":1},{"type":"inline","text":"Calcetines","line":1,"index\_in\_line":0},{"type":"inline","text":"Gorras","line":1,"index\_in\_line":1}],"**checker**":"Camisetas;1;Pantalones cortos;2;Calcetines;3;Gorras;4;"}

Luego se pueden insertar los valores del diccionario en campos del constructor:

<div data-with-frame="true"><figure><img src="/files/f2c8d2846241404cb1edda142815e3f346f6d91f" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/07ce06ebc98b5220996ae7c2a4a1e51cca8b5096" alt="" width="375"><figcaption></figcaption></figure></div>

<mark style="color:predeterminado;background-color:blue;">**Obtener un valor de diccionario basado en la selección del cliente**</mark>&#x20;

**tools\_check\_user\_input(values\_list, user\_input, key, return\_key)**&#x20;

Parámetros:

<mark style="color:rojo;">**!**</mark>**&#x20;values\_list** - un arreglo de cadenas o diccionarios cuyos datos se usarán para construir un teclado o una lista numerada\ <mark style="color:verde;">Ejemplo de diccionario:</mark> \[{"text":"Camisetas","price":100},{"text":"Pantalones cortos","price":150},{"text":"Calcetines","price":20},{"text":"Gorras","price":50}]\ <mark style="color:rojo;">**!**</mark>**&#x20;user\_input** - el valor ingresado por el usuario de uno de los valores en values\_list\ <mark style="color:verde;">Ejemplo de valor:</mark> Gorras\
**key** - кla clave usada para la selección desde el arreglo values\_list de diccionarios\ <mark style="color:verde;">Ejemplo de clave:</mark> text\
**return\_key** - el valor devuelto para la clave especificada desde values\_list\ <mark style="color:verde;">Ejemplo de valor devuelto:</mark> price

</details>

<details>

<summary>Ejemplo</summary>

Analicemos el uso de la función con un ejemplo de carrito de compras:

1.Define un arreglo y conviértelo en una lista numerada, botones y una lista de valores posibles (para mensajeros sin botones) usando la función tools\_make\_button\_str\_checker().

<div data-with-frame="true"><figure><img src="/files/b76a16cf4029f1febe28b88c09b109211a0c61e9" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/be3a237a2dd9cf2030ec8a5639699cfd48a6b052" alt="" width="375"><figcaption><p>Resultado del uso de <strong>tools_make_button_str_checker()</strong> función</p></figcaption></figure></div>

2.Usa los botones obtenidos y los valores numbered\_list para habilitar la selección de productos:

<div data-with-frame="true"><figure><img src="/files/998e0dbe64e427eb723eab380a75c6a781d58a95" alt=""><figcaption></figcaption></figure></div>

3.Usa la lista de verificación de valores posibles para validar la entrada del cliente:

<div data-with-frame="true"><figure><img src="/files/78a0b1209e24dd1b9b5f31a03cd860cb6f04ff4e" alt="" width="563"><figcaption></figcaption></figure></div>

4.Finalmente, muestra el precio del producto seleccionado al cliente. Esto es conveniente hacerlo usando la función tools\_check\_user\_input()

<div data-with-frame="true"><figure><img src="/files/d8a7bcc86015182a0168ffcb382ad9571fa0a040" alt=""><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
list = [{"text":"Camisetas","price":100},{"text":"Pantalones cortos","price":150},{"text":"Calcetines","price":20},{"text":"Gorras","price":50}]
res = tools_make_button_str_checker(list, "text", "2", "1")
numbered_list = res['numbered_list']
buttons = res['buttons']
checker = res['checker']

res_check = tools_check_user_input(list, user_input, 'text', 'price')
```

</details>

### Selección de datos de un arreglo

<details>

<summary>Descripción</summary>

**array\_slice(array, start\_index, end\_index)**&#x20;

Parámetros:

<mark style="color:rojo;">**!**</mark>**&#x20;arreglo** - arreglo \ <mark style="color:rojo;">**!**</mark>**&#x20;start\_index** - inicio del corte \
**end\_index** - fin del corte (predeterminado: hasta el final)

</details>

<details>

<summary>Ejemplo</summary>

Seleccionemos un subarreglo comenzando desde el primer elemento:

<div data-with-frame="true"><figure><img src="/files/a724351afdba87b9cf990647184901a751dea1dc" alt="" width="563"><figcaption><p>Ejemplo de uso de array_slice()</p></figcaption></figure></div>

&#x20;res será \["Pantalones cortos", "Calcetines", "Gorras"]&#x20;

Otro ejemplo de selección de un subarreglo desde el elemento 0 hasta el 2 del arreglo:

<div data-with-frame="true"><figure><img src="/files/fcc77ef540f336958806609a96da746b9317ce62" alt="" width="563"><figcaption><p>Ejemplo de uso de array_slice()</p></figcaption></figure></div>

&#x20;res será \["Camisetas", "Pantalones cortos"]

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
list = ["Camisetas", "Pantalones cortos", "Calcetines", "Gorras"] 
res = array_slice(list, 1)

res = array_slice(list, 0, 2)
```

</details>

### Desempaquetado de elementos de un arreglo

<details>

<summary>Función</summary>

unpack\_list(array, var\_name) - este método recorre un arreglo y crea una variable separada para cada elemento del arreglo con nombres como var1, var2, var3, etc.&#x20;

<mark style="color:rojo;">**!**</mark> array - parámetro obligatorio, un arreglo de elementos

var\_name - parámetro opcional, una cadena. Si se proporciona, se usa para nombrar los elementos desempaquetados. Ejemplos:

Si se proporciona var\_name, los nombres de las variables se forman usando var\_name

var\_name debe seguir las reglas de nomenclatura de variables.

</details>

<details>

<summary>Ejemplo</summary>

**Ejemplo 1:**

`array1 = ["one", "two", "three"]`

`ans1 = unpack_list(array1)`

**Resultado** - variables creadas:

`var1 = 'one'`

`var2 = 'two'`

`var3 = 'three'`

**Ejemplo 2:**

`array2 = ["one", "two", "three"]`

`var_name = 'custom'`

`ans2 = unpack_list(array2, var_name)`

**Resultado -** variables creadas:

`custom1 = 'one'`

`custom2 = 'two'`

`custom3 = 'three'`

</details>

### Cómo devolver una lista sin elementos duplicados

<details>

<summary>Descripción</summary>

remove\_duplicates(array) - devuelve una lista sin elementos duplicados.

<mark style="color:rojo;">**!**</mark> array - parámetro obligatorio. La lista original de elementos con duplicados.

</details>

<details>

<summary>Ejemplo</summary>

Ejemplo:

arr = \[1, 2, 5, 1, 5, 3]

new\_arr = remove\_duplicates(arr)

Resultado - a la variable new\_arr se le asignará la lista \[1, 2, 5, 3].

</details>

### Cómo crear un diccionario

<details>

<summary>Descripción</summary>

Creación de diccionario - declarar un diccionario

**name\_dictionary = {}**

</details>

### Cómo limpiar un diccionario

<details>

<summary>Descripción</summary>

Limpiar - no es más que declarar un diccionario vacío.

**name\_dictionary = {}**

</details>

### Cómo obtener el valor de un diccionario por clave

<details>

<summary>Descripción</summary>

**name\[key] -** obtención de un elemento del diccionario por clave

</details>

<details>

<summary>Ejemplos</summary>

**Ejemplo de trabajo con un diccionario:**

&#x20;En este caso específico, accedemos al valor por la clave "a". Para recuperar un valor de un diccionario usando una clave específica, utiliza el siguiente formato: name\_dictionary\["key"]

<div data-with-frame="true"><figure><img src="/files/6e4b655a9f552108fd94596eb39ee0a61f3fe7db" alt="" width="563"><figcaption></figcaption></figure></div>

Respuesta:

<div data-with-frame="true"><figure><img src="/files/693ec76067a5e9795f76d004daf6c63035305495" alt="" width="563"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
dicts = {"a": "11", "d": "hi"}
/*obtener del diccionario*/
aa = dicts["a"]
```

</details>

### Cómo obtener una lista de claves de un diccionario

<details>

<summary>Descripción</summary>

**dict\_keys\_to\_array(data)** - para obtener una lista de claves del diccionario de datos

</details>

<details>

<summary>Ejemplos</summary>

**Ejemplo:** Obtener una lista de todas las claves del diccionario

<div data-with-frame="true"><figure><img src="/files/933c050dbd1e58da3f1478382b5a7101a1fe8706" alt="" width="563"><figcaption></figcaption></figure></div>

**Respuesta:**&#x20;

<div data-with-frame="true"><figure><img src="/files/e2bd501c6018b34b471683f213fb79f63f41ec9a" alt=""><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
v={"A1":"naranja","A2":"albaricoque","A3":"mandarina","A4":"manzana","A5":"pera","A6":"kiwi","A7":"plátano","A8":"melocotón"} 
key= dict_keys_to_array(v)
```

</details>

### Cómo obtener una lista de valores de un diccionario

<details>

<summary>Descripción</summary>

**dict\_values\_to\_array(data)** - para obtener una lista de valores de un diccionario

</details>

<details>

<summary>Ejemplos</summary>

Ejemplo:

<div data-with-frame="true"><figure><img src="/files/91a01be6f0969d071c7789bf062a56d284469f1b" alt="" width="563"><figcaption></figcaption></figure></div>

Respuesta:

<div data-with-frame="true"><figure><img src="/files/a4d3e590a69a5545afc9aea2b7fa2d8e2aa3ab50" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
v={"A1":"naranja","A2":"albaricoque","A3":"mandarina","A4":"manzana","A5":"pera","A6":"kiwi","A7":"plátano","A8":"melocotón"}
value= dict_values_to_array(v)
```

</details>

### Cómo obtener los valores de la lista de diccionarios por la clave especificada

<details>

<summary>Descripción</summary>

**get\_values\_by\_key(data, key)** - permite obtener valores de la lista de diccionarios por la clave especificada. Devuelve una lista de valores.

</details>

<details>

<summary>Ejemplo</summary>

Ejemplo: obtener valores de una lista de diccionarios por clave

<div data-with-frame="true"><figure><img src="/files/5559bd1c9681f1359339ebd464f63bd4ecf09a95" alt="" width="563"><figcaption></figcaption></figure></div>

Respuesta:

<div data-with-frame="true"><figure><img src="/files/e06dcfaa2d4be75535bb4265b871737014850c9d" alt="" width="563"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
data = [{"Product": "Product№1", "Price": 1500}, {"Product": "Product№2", "Price": 6000}]
key = "Product"
result = get_values_by_key(data, key)
```

</details>

### Cómo reemplazar un valor en un diccionario&#x20;

<details>

<summary>Descripción</summary>

nam&#x65;**\['key'] = value** - reemplazando el valor del elemento del diccionario por la clave especificada. Si se especifica una clave inexistente, se agregará un nuevo elemento al diccionario.

</details>

<details>

<summary>Descripción</summary>

**Ejemplo:**

Para reemplazar el valor de un elemento específico de un array, escriba una asignación como arra&#x79;*\_name\[index] = value o dictionary\_name*\[key] = value

<div data-with-frame="true"><figure><img src="/files/42a569857bc6d3fac865fe35e8681f340e4d73b5" alt=""><figcaption></figcaption></figure></div>

Respuesta:&#x20;

<div data-with-frame="true"><figure><img src="/files/546379c4b75bfe25ab4aeb8cc18653b6ba984e8f" alt="" width="563"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
dicts = {"a": "11", "d": "hi"}

/*Reemplazar en un diccionario*/
dicts['d'] = AAAAA

/*Agregar en un diccionario   dicts['key'] = 'VVVVVVVVVVV'*/
dicts['m']=new

/*Reemplazar en un diccionario con un número*/
dicts['a'] = int('555')
```

</details>

### Cómo agregar un valor a un diccionario

<details>

<summary>Descripción</summary>

**dictionary\_name*****\['key'] = 'value'** -* agregando un nuevo valor al diccionario.&#x20;

{% hint style="warning" %}
Si la clave no existía antes, se agregará un nuevo par clave–valor; de lo contrario, se reemplazará el valor de la clave especificada.
{% endhint %}

</details>

<details>

<summary>Ejemplo</summary>

Este es un ejemplo del código en el campo de calculadora

<div data-with-frame="true"><figure><img src="/files/ec8177488227a60a4b08cf71d9a0a2ec05000944" alt=""><figcaption></figcaption></figure></div>

Respuesta

<div data-with-frame="true"><figure><img src="/files/c40cce8f2d05dc81f489b9ea16cd980b8e562612" alt="" width="563"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
/*agregando un nuevo valor al diccionario dicts['key'] = 'VVVVVVVVVVV'*/
dicts['m']=new
```

</details>

### Cómo comprobar si existe una clave en un diccionario

<details>

<summary>Descripción</summary>

**exist\_key(mass, key)** - para comprobar si existe una clave en un diccionario.

Parámetros:&#x20;

**mass -** dictionary&#x20;

**key -** la clave que se va a buscar

Devuelve True o False según si se encontró la clave.

</details>

<details>

<summary>Ejemplo</summary>

Ejemplo de uso:

<div data-with-frame="true"><figure><img src="/files/1ed7d3f4933ee0a9749ec842dd96926879b4afcb" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/5e7982b8eb13333b88b15aff15ca7f39cb2d6538" alt="" width="563"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
s = {"1": 123, "2": 234, "q": {"w": "e"}} 
q = if(exist_key(s, 'q'), 'Encontrado', 'Otra línea')
```

</details>

### Cómo comprobar la posición de una clave en un diccionario

<details>

<summary>Descripción</summary>

**key\_index(mass, key)** - para comprobar la posición de una clave en un diccionario.

**Parámetros:** \
**mass - diccionario**  \
**key -** Clave que se va a buscar.

{% hint style="info" %}
La posición en un diccionario se cuenta desde 0. Por lo tanto, el primer elemento es 0, el segundo elemento es 1, y así sucesivamente.
{% endhint %}

</details>

<details>

<summary>Ejemplo</summary>

Ejemplo de uso:

<div data-with-frame="true"><figure><img src="/files/7112e0a2a6816d452489be3a41a05dc6d907292e" alt=""><figcaption></figcaption></figure></div>

*Resultado:*

<div data-with-frame="true"><figure><img src="/files/870a662fdcf52cfe55a61920a63e1633b8e2de24" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
s = {"1": 123, "2": 234, "q": {"w": "e"}} 
q = key_index(s, 'q')
```

</details>

### Cómo obtener el número de elementos en un diccionario

<details>

<summary>Descripción</summary>

**arr\_len(mass)** - para determinar la longitud de un diccionario.&#x20;

Parámetro:\
**mass -** *dictionary*&#x20;

Resultado: Devuelve un número – la longitud del diccionario.

{% hint style="warning" %}
Будьте внимательны Al pasar un parámetro a la función: si la función se llama sin parámetros, devuelve 0; si el parámetro no es una lista ni un diccionario, devuelve -1.
{% endhint %}

</details>

<details>

<summary>Ejemplo</summary>

Ejemplo de uso:

<div data-with-frame="true"><figure><img src="/files/db9fa0c289563f53393590e580a0af1148781dc7" alt=""><figcaption></figcaption></figure></div>

Respuesta:

<div data-with-frame="true"><figure><img src="/files/6a212231741d2c4be18d9c769842ff95c14254b9" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

### Cómo eliminar un elemento de un diccionario

<details>

<summary>Descripción</summary>

Por índice o clave

**del(mass, key)** - para eliminar un elemento de una lista por índice o de un diccionario por clave.\
Toma dos parámetros: la lista/diccionario y el índice/clave a eliminar.\
Devuelve el diccionario o la lista modificados sin cambiar el objeto original.

{% hint style="warning" %}
Si los valores en una lista o diccionario son números, use la función remove() para eliminar un elemento.
{% endhint %}

</details>

<details>

<summary>Ejemplo</summary>

Ejemplo con un diccionario

<div data-with-frame="true"><figure><img src="/files/cdc5e5f6333799cb9ea5153025b47185b44e204d" alt=""><figcaption></figcaption></figure></div>

Resultado

<div data-with-frame="true"><figure><img src="/files/2c7d0cbe5bef48b10b9e17f2c0cc44241b9bfbd9" alt="" width="563"><figcaption></figcaption></figure></div>

Ejemplo con un array

<div data-with-frame="true"><figure><img src="/files/0a205b642c9ee0e2830f0c47dd7515df64457745" alt="" width="563"><figcaption></figcaption></figure></div>

Resultado

<div data-with-frame="true"><figure><img src="/files/782182468ba8e45376d593fc22c593f022a7f417" alt="" width="563"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

Ejemplo con un diccionario

`s={"1":123, "2":234, "q":{"w":"e"}}`<br>

`q=del(s,'q')`

Ejemplo con un array

`s=["John", "Ann", "Sophie"]`\ <br>

`q=del(s, 1)`

</details>

### Cómo convertir un diccionario en un texto legible por humanos

<details>

<summary>Descripción</summary>

**humanize(dict, delimiter, from\_i, to\_i)**&#x20;

Parámetros:

**dict** - nombre del diccionario\
**delimiter** - delimitador entre líneas\
**from\_i** - índice del elemento desde el que empezar la salida (basado en 0)\
**to\_i** - índice del elemento donde terminar la salida (no inclusivo)

</details>

<details>

<summary>Ejemplo</summary>

Veamos el ejemplo:

<div data-with-frame="true"><figure><img src="/files/a37670721686f865e77573e0477a5a133afe2d99" alt="" width="563"><figcaption></figcaption></figure></div>

Respuesta

<div data-with-frame="true"><figure><img src="/files/8d46a1ad8c44974eeb27cc2b28e834628989acfb" alt="" width="563"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

```
dict = {"[id146467928|Alex]":"6","[id145255525|Маx]":"20"}
r = humanize(dict, ': ')
```

</details>

### Para ordenar diccionarios&#x20;

sort() | sort\_by\_value()

<details>

<summary>Descripción</summary>

<mark style="color:predeterminado;background-color:blue;">**Ordenación de diccionarios**</mark>

**sort(dict, b)** - Ordena una lista por valor y un diccionario por clave

Parámetros:

<mark style="color:rojo;">**!**</mark>**&#x20;dict**- diccionario

**b** - dirección de ordenación (False – ascendente por defecto, True – descendente)

<mark style="color:predeterminado;background-color:blue;">**Ordenación de diccionarios por valor**</mark>

**sort\_by\_value(dict, b) -** Ordenación de un diccionario por valores.

Parámetros:

<mark style="color:rojo;">**!**</mark>**&#x20;dict**- diccionario

**b** - dirección de ordenación (False – ascendente por defecto, True – descendente)

</details>

<details>

<summary>Ejemplos</summary>

Ejemplo: ordenar una lista en orden descendente y un diccionario en orden ascendente:

<div data-with-frame="true"><figure><img src="/files/447cb676ed256995ac0f28bf4784a906c2f50587" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/232e32786bd2963994b92dcb4da12906990833e2" alt="" width="375"><figcaption></figcaption></figure></div>

Ordenación de un diccionario por sus valores:

<div data-with-frame="true"><figure><img src="/files/6d5ae3091fcf6a397027cd18c501ae58aa6a8482" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/946e3d1fa38fda4959b93a34eda9d182d3d846d8" alt="" width="375"><figcaption></figcaption></figure></div>

</details>

<details>

<summary>Ejemplo de código para copiar</summary>

Ejemplo: ordenar una lista en orden descendente y un diccionario en orden ascendente:

`array1=[5,4,0,6,3,0]`<br>

`array1=sort(array1, True)`

`dict={"Ann":5, "John":4, "Sophie":0, "Alex":6, "Kate":3, "Harry":0}`

`dict=sort(dict)`

Ordenación de un diccionario por sus valores:

`dict={"Ann":5, "John":4, "Sophie":0, "Alex":6, "Kate":3, "Harry":0}`&#x20;

`dict=sort_by_value(dict)`

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mavibot.ai/doc/es/chatbot/functions/calculadora/arrays.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
