Как объединить 2 массива одинаковой длины в один словарь с парами ключ: значение в Годо? - PullRequest
1 голос
/ 04 апреля 2019

Я пытался рандомизировать значения в упорядоченном массиве (например: [0,1,2,3]) в Годо. Предполагается, что для массивов существует метод shuffle (), но он, кажется, не работает и всегда возвращает значение «ноль». Я нашел обходной путь, который использует случайное перемешивание Фишера-Йейтса, но полученный массив считается «не отсортированным» механизмом, и поэтому, когда я пытаюсь использовать методы, такие как 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, несмотря на мои многочасовые поиски.

1 Ответ

2 голосов
/ 04 апреля 2019

Попробуйте это:

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)

Если вы хотите добавить элементы в словарь, вы можете назначить значения клавишам, таким как существующие ключи.

...