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.
Tutoriales¶
Métodos¶
void |
clear ( ) |
empty ( ) |
|
hash ( ) |
|
keys ( ) |
|
size ( ) |
|
values ( ) |
Descripciones de Métodos¶
void clear ( )
Limpia el diccionario, eliminando todos los pares clave/valor.
Dictionary duplicate ( bool deep=false )
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.
bool empty ( )
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.
int hash ( )
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.
Array keys ( )
Devuelve la lista de claves en el Dictionary
.
int size ( )
Returns the number of keys in the dictionary.
Array values ( )
Devuelve la lista de valores del Dictionary
.