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() | |
Dictionary | duplicate(deep: bool = false) |
bool | empty() |
bool | erase(key: Variant) |
Variant | get(key: Variant, default: Variant = null) |
bool | has(key: Variant) |
bool | has_all(keys: Array) |
int | hash() |
Array | keys() |
int | size() |
Array | values() |
方法说明
- 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中的值列表。