跳到主要内容

Dictionary

简要描述

字典类型。

描述

字典类型。关联容器,其中包含唯一键值的引用。字典由成对的键(必须是唯一的)和值组成。您可以通过将以逗号分隔的成对(key: value)列表放在花括号{}中来定义字典。

不支持在迭代元素过程中删除它,这将导致未定义的行为。

创建字典:

var my_dir = {} # 创建一个空字典。
var points_dir = {"White": 50, "Yellow": 75, "Orange": 100}
var my_dir = {
key1: value1,
key2: value2,
key3: value3,
}

您可以通过在字典中引用正确的键值取它对应的值,在上面例子中,points_dir["White"]将返回50。

export(String, "White", "Yellow", "Orange") var my_color
var points_dir = {"White": 50, "Yellow": 75, "Orange": 100}

func _ready():
var points = points_dir[my_color]

在上述代码中,points将被赋予在my_color中选择的合适的颜色配对值。

字典可以包含更复杂的数据:

my_dir = {"First Array":[2,]} # 给字符串键值赋一个数组.

要将键添加到现有字典,请像现有键一样对其进行访问并分配给它:

var points_dir = {"White": 50, "Yellow": 75, "Orange": 100}
var points_dir["Blue"]= 150 # 添加 "Blue" 作为键,并赋予150作为它的值

最后,可以在同一字典中包含不同类型的键和值:

var my_dir = {"String Key": 5, 4:[2,], 7: "Hello"} # 这是一个有效的字典。

注意:Arrays不同,您不能直接比较字典:

array1 =[2,]
array2 =[2,]

func compare_arrays():
print(array1 == array2) # 将打印true

dir1 = {"a": 1, "b": 2, "c": 3}
dir2 = {"a": 1, "b": 2, "c": 3}

func compare_dictionaries():
print(dir1 == dir2) # 不会打印true.

您需要先使用hash计算字典的哈希值,然后才能进行比较:

dir1 = {"a": 1, "b": 2, "c": 3}
dir2 = {"a": 1, "b": 2, "c": 3}

func compare_dictionaries():
print(dir1.hash() == dir2.hash()) # 将打印true.

方法

返回值类型方法名称
clear()
Dictionaryduplicate(deep: bool = false)
boolempty()
boolerase(key: Variant)
Variantget(key: Variant, default: Variant = null)
boolhas(key: Variant)
boolhas_all(keys: Array)
inthash()
Arraykeys()
intsize()
Arrayvalues()

方法说明

  • clear clear()

清除字典,删除所有键/值对。


  • duplicate duplicate(deep: bool = false)

创建字典的副本,然后将其返回。


  • empty empty()

如果字典为空,则返回true


  • erase erase(key: Variant)

通过键删除字典键/值对。如果给定的键在字典中存在则返回true,否则返回false。遍历字典的过程中不能删除元素。


  • get get(key: Variant, default: Variant = null)

返回Dictionary中指定键的当前值。如果键不存在,则该方法返回可选默认参数的值,或者省略返回null


  • has has(key: Variant)

如果字典具有给定的键,则返回true


  • has_all has_all(keys: Array)

如果字典具有在给定数组中的所有键,则返回true


  • hash hash()

返回表示字典内容的哈希整数值。这可以用于比较字典中的值

var dict1 = {0: 10}
var dict2 = {0: 10}
# 以下这行打印 `true`, 如果直接比较两个变量则返回 `false`。
print(dict1.hash() == dict2.hash())

  • keys keys()

返回Dictionary中的键列表。


  • size size()

返回字典的大小(成对)。


  • values values()

返回Dictionary中的值列表。