Dictionary

Tipo diccionario.

Descripción

Tipo de diccionario. Contenedor asociativo que contiene valores referenciados por claves únicas. Los diccionarios se componen de pares de claves (que deben ser únicas) y valores. Los diccionarios conservarán el orden de inserción al agregar elementos, aunque esto puede no reflejarse al imprimir el diccionario. En otros lenguajes de programación, esta estructura de datos a veces se denomina mapa hash o matriz asociativa.

Puede definir un diccionario colocando una lista separada por comas de pares clave: valor entre llaves {}.

Borrar elementos mientras se itera sobre ellos no es compatible y resultará en un comportamiento indefinido.

Nota: Los diccionarios siempre se pasan por referencia. Para obtener una copia de un diccionario que se pueda modificar independientemente del diccionario original, utilice duplicate.

Crear un diccionario:

var my_dir = {} # Crea un diccionario vacío.
var puntos_dict = {"Blanco": 50, "Amarillo": 75, "Naranja": 100}
var otro_dict = {
    key1: value1,
    key2: value2,
    key3: value3,
}

Puede acceder a los valores de un diccionario haciendo referencia a la clave adecuada. En el ejemplo anterior, puntos_dict["Blanco"] devolverá 50. También puede escribir puntos_dict.Blanco, que es equivalente. Sin embargo, tendrá que usar la sintaxis de corchetes si la clave con la que accede al diccionario no es una cadena fija (como un número o una variable).

export (String, "Blanco", "Amarillo", "Naranja") var my_color
var puntos_dict = {"Blanco": 50, "Amarillo": 75, "Naranja": 100}

func _ready():
    # No podemos usar la sintaxis de puntos aquí ya que `my_color` es una variable.
    var puntos = puntos_dict[my_color]

En el código anterior, a los puntos se les asignará el valor que se empareja con el color apropiado seleccionado en my_color.

Los diccionarios pueden contener datos más complejos:

my_dict = {"First Array": [1, 2, 3, 4]} # Asigna una matriz a una clave de cadena.

Para agregar una clave a un diccionario existente, acceda a él como una clave existente y asígnele:

var puntos_dict = {"Blanco": 50, "Amarillo": 75, "Naranja": 100}
puntos_dict["Blue"] = 150 # Agrega "Blue" como clave y asigna 150 como su valor.

Finalmente, los diccionarios pueden contener diferentes tipos de claves y valores en el mismo diccionario:

# Este es un diccionario válido.
# Para acceder a la cadena "Valor anidado" a continuación, use `my_dict.sub_dir.sub_key` o `my_dict["sub_dir"]["sub_key"]`.
# Los estilos de indexación se pueden mezclar y combinar según sus necesidades.
var my_dict = {
    "Clave de cadena": 5,
    4: [1, 2, 3],
    7: "Hola",
    "sub_dict": {"sub_key": "Valor anidado"},
}

Nota: A diferencia de los Array, no puede comparar diccionarios directamente:

array1 = [1, 2, 3]
array2 = [1, 2, 3]

func compare_arrays():
    print(array1 == array2) # Imprimirá verdadero.

dict1 = {"a": 1, "b": 2, "c": 3}
dict2 = {"a": 1, "b": 2, "c": 3}

func compare_dictionaries():
    print(dict1 == dict2) # NO imprimirá verdadero.

Primero debes calcular el hash del diccionario con hash antes de poder compararlos:

dict1 = {"a": 1, "b": 2, "c": 3}
dict2 = {"a": 1, "b": 2, "c": 3}

func compare_dictionaries():
    print(dict1.hash() == dict2.hash()) # Se imprimirá verdadero.

Métodos

void

clear ( )

Dictionary

duplicate ( bool deep=false )

bool

empty ( )

bool

erase ( Variant key )

Variant

get ( Variant key, Variant default=null )

bool

has ( Variant key )

bool

has_all ( Array keys )

int

hash ( )

Array

keys ( )

int

size ( )

Array

values ( )

Descripciones de Métodos

  • void clear ( )

Limpia el diccionario, eliminando todos los pares clave/valor.


Crea una copia del diccionario y la devuelve. El parámetro deep hace que los diccionarios y arrays internos se copien de forma recursiva, pero no se aplica a los objetos.


Devuelve true si el diccionario está vacío.


Erase a dictionary key/value pair by key. Returns true if the given key was present in the dictionary, false otherwise.

Note: Don't erase elements while iterating over the dictionary. You can iterate over the keys array instead.


Devuelve el valor actual de la clave especificada en el Dictionary. Si la clave no existe, el método devuelve el valor del argumento opcional por defecto, o null si se omite.


Devuelve true si el diccionario tiene una clave determinada.

Nota: Esto equivale a utilizar el operador en de la siguiente manera:

# Evaluará a "true".
if "godot" en {"godot": "motor":}
    pass

Este método (como el operador in) evaluará a true mientras exista la clave, incluso si el valor asociado es null.


Returns true if the dictionary has all the keys in the given array.


Devuelve un valor entero hash que representa el contenido del diccionario. Esto puede ser usado para comparar los diccionarios por su valor:

var diccionario1 = {0: 10}
var diccionario2 = {0: 10}
# La línea de abajo imprime "true", mientras que habría impreso "false" si ambas variables se compararan directamente.
print(dict1.hash() == dict2.hash())

Nota: Los diccionarios con las mismas claves/valores pero en un orden diferente tendrán un hash diferente.


Devuelve la lista de claves en el Dictionary.


Returns the number of keys in the dictionary.


Devuelve la lista de valores del Dictionary.