English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом руководстве вы узнаете, что такое словарь, как его создавать и какие операции с ним наиболее распространены.
В предыдущейSwift массивВ этой статье мы изучили, как хранить несколько значений в переменных/константах. В этой статье мы обсудим, как хранить данные/значения в виде пар ключ: значение.
Словарь — это контейнер, который может хранить несколько данных в виде пар ключ: значение, неорядочными.
Каждое значение связано с уникальным ключом и хранится в несортированном списке какСборникиЭто означает, что вы получаете элементы в порядке, отличном от порядка, в котором вы определяете элементы в словаре.
Когда вам нужно найти значение с определенным идентификатором в集合е, вы можете использовать словарь вместо массива. Предположим, вы хотите найти столицу этой страны. В этом случае вы создадите словарь с парой ключ: значение, включающей страну и город столицу. Теперь вы можете получить значение: столица, ищя ключ: страна в集合е.
Кратко говоря, вы сопоставляете ключ с значением. В примере выше мы сопоставили страну с ее столицей.
Вы можете создать пустой словарь, указав тип данных key: value в квадратных скобках [].
let emptyDic: [Int: String] = [:] print(emptyDic)
При выполнении этого программы, вывод будет:
[:]или
Вы также можете определить пустой словарь следующим образом:
let emptyDic: Dictionary<Int, String> = [:] print(emptyDic)
В上面 приведенной программе мы объявили константу emptyDic типа dictionary с ключами типа Int и значениями типа String, и инициализировали ее значением 0.
или
Поскольку Swift является языком с типовой инференцией, вы также можете создать словарь, не указывая тип данных, но вам нужно использовать некоторые значения для инициализации, чтобы компилятор мог определить его как:
let someDic = ["a":1, "b":2, "c":3, "d":4, "e":5, "f":6, "g":7, "h":8, "i":9] print(someDic)
При выполнении этого программы, вывод будет:
["b": 2, "a": 1, "i": 9, "c": 3, "e": 5, "f": 6, "g": 7, "d": 4, "h": 8]
В上面的 программе мы объявили словарь, но не определили его тип явно, а初始化ировали его с помощью некоторых элементов по умолчанию.
Элементы расположены в парах ключ: значение, где тип ключа String, а тип значения Int. Поскольку словарь не является упорядоченным списком, print(someDic) выводит значения в порядке, отличный от порядка их определения.
Мы также можем создать словарь из массива.
let customKeys = ["Facebook", "Google", "Amazon"] let customValues = ["Mark", "Larry", "Jeff"] let newDictionary = Dictionary(uniqueKeysWithValues: zip(customKeys,customValues)) print(newDictionary)
При выполнении этого программы, вывод будет:
["Amazon": "Jeff", "Google": "Larry", "Facebook": "Mark"]
В上面的 программе zip(customKeys,customValues) создает новый ряд кортежей, каждый из которых представляет значения из customKeys и customValues.
Теперь мы можем передать этот ряд в инициализатор Dictionary(Unique eKeysWithValues:) и создать новый словарь. Поэтому print(NewDictionary) выводит новый словарь, содержащий элементы из двух массивов.
Как массив, элементы словаря можно получить с помощью синтаксиса индексации. Вам нужно включить ключ, который вы хотите получить, в квадратные скобки после имени словаря.
let someDic = ["a":1, "b":2, "c":3, "d":4, "e":5, "f":6, "g":7, "h":8, "i":9] print(someDic["a"]) print(someDic["h"])
При выполнении этого программы, вывод будет:
Optional(1) Optional(8)
Вы также можете использовать цикл for-in для доступа к элементам словаря.
let someDic = ["a":1, "b":2, "c":3, "d":4, "e":5, "f":6, "g":7, "h":8, "i":9] for (key,value) in someDic { print("key:\(key) value:\(value)") }
При выполнении этого программы, вывод будет:
key:b value:2 key:a value:1 key:i value:9 key:c value:3 key:e value:5 key:f value:6 key:g value:7
Элементы, которые можно добавить в словарь с помощью синтаксиса индекса. Вам нужно включить Новый ключ В качестве индекса ключа и назначение нового значения типу Dictionary.
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] someDictionary["Japan"] = "Tokyo" print(someDictionary)
При выполнении этого программы, вывод будет:
["Japan": "Tokyo", "China": "Beijing", "India": "NewDelhi", "Nepal": "Kathmandu"]
В上面的 примере мы использовали синтаксис индекса для создания нового ключ-значение "Japan": "Tokyo" в данном словаре.
Вы также можете использовать синтаксис индекса для изменения значения, связанного с определенным ключом:
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] someDictionary["Nepal"] = "KATHMANDU" print(someDictionary)
При выполнении этого программы, вывод будет:
["China": "Beijing", "India": "NewDelhi", "Nepal": "KATHMANDU"]
Эта свойство определяет, пуст ли словарь. Если словарь не содержит никаких значений, он возвращает true, в противном случае false.
let someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] print(someDictionary.isEmpty)
При выполнении этого программы, вывод будет:
false
Эта свойство используется для доступа к первому элементу словаря.
let someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] print(someDictionary.first)
При выполнении этого программы, вывод будет:
Optional((ключ: "China", значение: "Beijing"))
Этот параметр возвращает общее количество элементов (ключей/значений) в словаре.
let someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] print(someDictionary.count)
При выполнении этого программы, вывод будет:
3
Этот параметр возвращает все ключи из словаря.
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] let dictKeys = Array(someDictionary.keys) print(dictKeys)
При выполнении этого программы, вывод будет:
["China", "India", "Nepal"]
Таким же образом, вы можете использовать values параметр для получения всех значений из словаря.
Эта функция используется для удаления и возврата значения из словаря по указанному ключу. Эти два значения ключей/значений будут удалены из словаря.
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] let val = someDictionary.removeValue(forKey: "Nepal") print(val) print(someDictionary)
При выполнении этого программы, вывод будет:
Optional("Kathmandu") ["India": "NewDelhi", "China": "Beijing"]
Таким же образом, вы можете использовать removeAll Функция очищает словарь.
1.При доступе к элементам словаря с использованием синтаксиса индексации в Swift, вам необходимо убедиться, что ключ находится в индексе,否则 вы получитеnilЗначение. Давайте посмотрим на пример:
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] let val = someDictionary["Япония"] print(val)
При выполнении этого программы, вывод будет:
nil
В указанном выше коде отсутствует ключ Япония . Поэтому, когда вы пытаетесь получить доступ к ключу «Япония » вы получите значение nil.
2.Таким же образом, ключи и значения в Swift различаются по регистру, поэтому вам необходимо убедиться, что вы используете правильный регистр ключей/значений. В противном случае, вы получите значение nil. Давайте посмотрим на пример:
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] let val = someDictionary["nepal"] print(val)
При выполнении этого программы, вывод будет:
nil
В указанном выше коде отсутствует ключ «nepal». Поэтому, когда вы пытаетесь получить доступ к ключу «nepal», вы получите значение nil.
3.Если значение ключа не существует, то还有一种 способ предоставить значение по умолчанию. Давайте посмотрим на пример:
var someDictionary = ["Nepal":"Kathmandu", "China":"Beijing", "India":"NewDelhi"] let val = someDictionary["nepal", default:"Not Found"] print(val)
При выполнении этого программы, вывод будет:
Не найдено
В aforementioned программе, когда мы доступаемся до словаря, мы указываем значение по умолчанию в параметре по умолчанию. Если значение ключа не существует, то возвращается значение по умолчанию,否则 возвращается это значение
В нашем примере, ключ"nepal"Не существует, поэтому программа возвращает значение по умолчанию: Не найдено.