如何在 Godot 中将 2 个等长数组合并到一个 key:value 对的字典中?
How to merge 2 arrays of equal length into a single dictionary with key:value pairs in Godot?
我一直在尝试随机化 Godot 中有序数组(例如:[0,1,2,3])中的值。应该有一个数组的 shuffle() 方法,但它似乎被破坏并且总是 returns "null"。我找到了一个使用 Fisher-Yates 洗牌的变通方法,但是生成的数组被引擎认为是 "unsorted",因此当我尝试使用 bsearch() 之类的方法按其位置查找值时,结果充其量是不可靠的。
我的解决方案是创建一个字典,它由一个包含我获得的随机值的数组组成,并与第二个长度相等的数组合并,其中包含(排序的)数字(按数字顺序),然后我可以将其用作键在需要时访问特定的数组位置。
问题变得简单...
在 GDScript 中,您将如何获取 2 个数组..
例如:ARRAY1 = [0,1,2,3]
ARRAY2 = [a,b,c,d]
..并将它们合并成一个字典,如下所示:
MergedDictionary = {0:a, 1:b, 2:c, 3:d}
如有任何帮助,我们将不胜感激。
Godot 不支持 "zip" 合并数组的方法,例如 Python 支持,所以我不得不手动合并它们。然而......尽管我搜索了很多小时,但几乎没有关于如何在 GDScript 中执行此操作的文档。
试试这个:
var a = [1, 2, 3]
var b = ["a", "b", "c"]
var c = {}
if a.size() == b.size():
var i = 0
for element in a:
c[element] = b[i]
i += 1
print("Dictionary c: ", c)
如果要向字典中添加元素,可以像现有键一样为键赋值。
我一直在尝试随机化 Godot 中有序数组(例如:[0,1,2,3])中的值。应该有一个数组的 shuffle() 方法,但它似乎被破坏并且总是 returns "null"。我找到了一个使用 Fisher-Yates 洗牌的变通方法,但是生成的数组被引擎认为是 "unsorted",因此当我尝试使用 bsearch() 之类的方法按其位置查找值时,结果充其量是不可靠的。
我的解决方案是创建一个字典,它由一个包含我获得的随机值的数组组成,并与第二个长度相等的数组合并,其中包含(排序的)数字(按数字顺序),然后我可以将其用作键在需要时访问特定的数组位置。
问题变得简单...
在 GDScript 中,您将如何获取 2 个数组.. 例如:ARRAY1 = [0,1,2,3] ARRAY2 = [a,b,c,d]
..并将它们合并成一个字典,如下所示: MergedDictionary = {0:a, 1:b, 2:c, 3:d}
如有任何帮助,我们将不胜感激。
Godot 不支持 "zip" 合并数组的方法,例如 Python 支持,所以我不得不手动合并它们。然而......尽管我搜索了很多小时,但几乎没有关于如何在 GDScript 中执行此操作的文档。
试试这个:
var a = [1, 2, 3]
var b = ["a", "b", "c"]
var c = {}
if a.size() == b.size():
var i = 0
for element in a:
c[element] = b[i]
i += 1
print("Dictionary c: ", c)
如果要向字典中添加元素,可以像现有键一样为键赋值。