Łączenie słowników
Część sekcji Logika i przepływ programu ścieżki GDScript w Coddy. Lekcja 21 z 78.
merge() dodaje każdą parę z innego słownika do słownika, na którym ją wywołujesz. Klucze, które występują tylko w drugim słowniku, są dodawane na końcu:
var settings := {"volume": 5, "difficulty": "normal"}
var saved := {"difficulty": "hard", "subtitles": true}
settings.merge(saved)
print(settings){ "volume": 5, "difficulty": "normal", "subtitles": true }"difficulty" występuje w obu słownikach, a merge() zachowało wartość, którą miało już settings: domyślnie istniejące klucze nie są nadpisywane. Przekaż true jako drugi argument, aby wygrał drugi słownik:
var options := {"volume": 5, "difficulty": "normal"}
options.merge(saved, true)
print(options["difficulty"]) # hardmerge() zmienia sam słownik i nic nie zwraca, więc var result := a.merge(b) jest błędem. Aby zachować oba słowniki bez zmian, użyj merged(). Przyjmuje te same argumenty i zwraca nowy słownik:
var defaults := {"volume": 5, "difficulty": "normal"}
var choice := {"difficulty": "hard"}
var final_settings := defaults.merged(choice, true)
print(final_settings) # { "volume": 5, "difficulty": "hard" }
print(defaults) # { "volume": 5, "difficulty": "normal" }Gdy klucz występuje w obu słownikach i chcesz połączyć wartości, na przykład zsumować dwie kwoty, napisz pętlę samodzielnie:
var bag := {"gold": 10, "gems": 1}
var loot := {"gold": 5, "keys": 2}
for key in loot:
bag[key] = bag.get(key, 0) + loot[key]
print(bag) # { "gold": 15, "gems": 1, "keys": 2 }Wyzwanie
ŁatwyAktualizacja gry dodała nowe ustawienia. Zapisane ustawienia gracza są odczytywane z jednego wiersza danych wejściowych, zapisanego jako pary key=value rozdzielone przecinkami (wiersz może być pusty). Podany kod przechowuje je w słowniku saved.
Uzupełnij brakujące ustawienia w zapisie: dodaj do saved każdą parę z defaults, której klucza jeszcze w nim nie ma, nie zmieniając wartości wybranych przez gracza ani nie modyfikując defaults. Następnie wypisz saved, a w kolejnym wierszu wypisz defaults.
Dla danych wejściowych difficulty=hard,volume=8 wynikiem jest:
{ "difficulty": "hard", "volume": "8", "subtitles": "off", "language": "en" }
{ "difficulty": "normal", "volume": "5", "subtitles": "off", "language": "en" }Spróbuj swoich sił
extends Node
func _ready():
var defaults := {"difficulty": "normal", "volume": "5", "subtitles": "off", "language": "en"}
var saved := {}
for pair in OS.read_string_from_stdin().split(",", false):
var parts := pair.split("=")
saved[parts[0]] = parts[1]
# Dodaj brakujące wartości domyślne do saved, a następnie wypisz oba słowniki
pass
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Łańcuchy znaków — zagadnienia zaawansowane
Metody łańcuchów znakówWyszukiwanie w łańcuchach znakówZastępowanie i przycinanieDzielenie i łączeniePodsumowanie — sprawdzanie nazwy użytkownika4Słowniki, część 2
Zagnieżdżone słownikiTablice słownikówŁączenie słownikówKopiowanie słownikówPodsumowanie – licznik częstotliwości7Typy wyliczeniowe
Czym jest typ wyliczeniowy?Definiowanie typu wyliczeniowegoWartości typu wyliczeniowegoTypy wyliczeniowe w matchPowtórka – sygnalizacja świetlna10Zaawansowane funkcje
Zwracanie wielu wartościFunkcje lambda — część 1Funkcje lambda — część 2Powtórka — sortowanie za pomocą lambdaFunkcje rekurencyjne — część 1Funkcje rekurencyjne — część 2Powtórka — sumowanie zagnieżdżonej tablicy13System zarządzania zapasami
Omówienie projektuDodawanie produktu2Zaawansowane podejmowanie decyzji
Dopasowanie ze zmiennymiStrażnicy dopasowaniaWzorce tablicWzorce słownikówSprawdzanie przynależnościPowtórka — parser poleceń5Aplikacja książki kontaktów
Wyświetlanie menuDodawanie kontaktu8Menedżer danych studentów
Przegląd projektuDodaj studenta3Tablice wielowymiarowe
Podstawy tablic 2DDostęp do elementów tablic 2DPętle zagnieżdżone z tablicami 2DPodsumowanie — tablice 2DTablice postrzępioneTypowe wzorce tablic 2DPodsumowanie — plansza do gry6Zbiory ze słownikami
Czym jest zbiór?Słownik jako zbiórDodawanie i usuwanieSuma i część wspólnaRóżnica zbiorówPowtórka – usuwanie duplikatów9Zaawansowana agregacja danych
Sumowanie wartościZnajdowanie minimum i maksimumSortowanie niestandardowePodsumowanie – Sortownik słownikówPoćwicz samodzielnie: Kompilator GDScript online