Sling Academy
Home/Swift/Creating Dictionaries in Swift (with Examples)

Creating Dictionaries in Swift (with Examples)

Last updated: May 06, 2023

Introduction

One of the essential data structures in modern Swift programming is the dictionary. Dictionaries are unordered collections of key-value pairs, where each key maps to a specific value. They provide an efficient way to store and retrieve data, making them a fundamental part of many applications. In this article, we’ll explore several different approaches to creating dictionaries in Swift.

Using a dictionary literal

Non-empty dictionary

The simplest and most intuitive way to create a dictionary in Swift is by using a dictionary literal. A dictionary literal is a list of key-value pairs enclosed in square brackets and separated by colons.

Example:

var products = [
    "notebook": 10.0,
    "pen": 0.99,
    "pencil": 0.5,
    "eraser": 0.25,
    "ruler": 1.0,
]

print(products)

Output:

["eraser": 0.25, "ruler": 1.0, "pen": 0.99, "pencil": 0.5, "notebook": 10.0]

In this example, we’ve created a dictionary called products, which maps the names of some office equipment to their respective pricing.

Empty dictionary

In case you want to initialize an empty dictionary by using a dictionary literal, you need to provide the type information of the keys and values explicitly like so:

// create an empty dictionary
var emptyDict: [String: String] = [:]

// add a new key-value pair
emptyDict["first"] = "one"

Using the Dictionary initializer

Non-empty dictionary

You can create a dictionary by using the Dictionary initializer when you have a sequence of key-value pairs, such as an array of tuples.

Example:

let pairs = [("a", 1), ("b", 2), ("c", 3)]
let dict = Dictionary(uniqueKeysWithValues: pairs)
print(dict) // ["a": 1, "c": 3, "b": 2]

This creates a dictionary named dict with keys and values of type String and Int respectively. The initializer assumes that the keys are unique and throws a runtime error if there are duplicate keys.

If you have duplicate keys in your sequence and you want to combine the values for each key, you can use uniquingKeysWith as shown below:

let pairs = [("a", 1), ("b", 2), ("c", 3), ("a", 4), ("b", 5)]
let dict = Dictionary(pairs, uniquingKeysWith: +)
print(dict) // ["a": 5, "c": 3, "b": 7]

The zip() function can also be used to create a dictionary in Swift. This method is particularly useful when you have two separate arrays for keys and values.

Example:

let fruitNames = ["apple", "banana", "orange"]
let quantities = [5, 8, 10]

let fruits = Dictionary(
    uniqueKeysWithValues: zip(fruitNames, quantities)
)

print(fruits) // ["orange": 10, "apple": 5, "banana": 8]

Empty dictionary

The syntax to create an empty dictionary by using the Dictionary initializer is as follows:

var myDictionary = Dictionary<String, String>()

Creating a dictionary from an array of objects

In the following example, we will use the reduce(into: [:]) method to produce a dictionary from a given array of objects.:

struct Website {
    let name: String
    let url: String
}

let websiteObjects = [
    Website(name: "Sling Academy", url: "https://www.slingacademy.com"),
    Website(name: "Example", url: "https://www.example.com"),
    Website(
        name: "Sling Academy Public API",
        url: "https://api.slingacademy.com"
    ),
]

let websites = websiteObjects.reduce(into: [:]) { dict, website in
    dict[website.name] = website.url
}

print(websites)

Output:

[
  "Example": "https://www.example.com", 
  "Sling Academy Public API": "https://api.slingacademy.com", 
  "Sling Academy": "https://www.slingacademy.com"
]

Next Article: Swift: Counting Elements in a Dictionary

Previous Article: Using the zip() function in Swift

Series: Collection data types in Swift

Swift

You May Also Like

  • How to Find the Union of 2 Sets in Swift
  • How to Find the Intersection of 2 Sets in Swift
  • Subtracting 2 Sets in Swift (with Examples)
  • Swift: Removing Elements from a Set (4 Examples)
  • Swift: Checking if a Set Contains a Specific Element
  • Swift: Counting the Number of Elements in a Set
  • Adding new Elements to a Set in Swift
  • How to Create a Set in Swift
  • Swift: Converting a Dictionary into an Array
  • Merging 2 Dictionaries in Swift
  • Swift: Check if a key exists in a dictionary
  • Swift: Removing a key-value pair from a dictionary
  • Swift: Adding new key-value pairs to a dictionary
  • Swift: Counting Elements in a Dictionary
  • Swift: Ways to Calculate the Product of an Array
  • Swift: How to Convert an Array to JSON
  • Swift: Different ways to find the Min/Max of an array
  • Swift: 4 Ways to Count the Frequency of Array Elements
  • How to Compare 2 Arrays in Swift (Basic & Advanced)