# Swift Dictionaries

> An introduction to dictionaries in Swift: how to create key-value pairs, read and change values by key, add and remove entries, and use count and isEmpty.

Author: Flavio Copes | Published: 2021-06-05 | Canonical: https://flaviocopes.com/swift-dictionaries/

> This tutorial belongs to the [Swift](https://flaviocopes.com/swift-introduction/) series

We use dictionaries to create a collection of key-value pairs.

Here is how to create a dictionary with 1 key-value pairs, where the key is a String and the value is an Int:

```swift
var dict = ["Roger": 8, "Syd": 7]
```

In this case the type is inferred. You can also explicitly set the type at declaration time:

```swift
var dict: [String: Int] = ["Roger": 8, "Syd": 7]
```

In this example we create an empty dictionary of Int keys and String values:

```swift
var dict = [String: Int]()

//or

var dict: [String: Int] = [:]
```

You can access the value assigned to a key using this syntax:

```swift
var dict = ["Roger": 8, "Syd": 7]

dict["Roger"] //8
dict["Syd"] //7
```

You can change the value assigned to a key in this way:

```swift
dict["Roger"] = 9
```

> A dictionary must be declared as `var` to be modified. If it's declared with `let`, you cannot modify it by adding or removing elements.

Use the same syntax to add a new key/value pair:

```swift
dict["Tina"] = 4
```

To remove a key/value paid, assign the value to `nil`:

```swift
dict["Tina"] = nil
```

Or call the `removeValue(forKey:)` method:

```swift
dict.removeValue(forKey: "Tina")
```

To get the number of items in the dictionary, use the `count` property:

```swift
var dict = ["Roger": 8, "Syd": 7]
dict.count //2
```

If a dictionary is empty, its `isEmpty` property is `true`.

```swift
var dict = [String: Int]()
dict.isEmpty //true
```

There are a lot of methods related to dictionaries, but those are the basic ones.

Dictionaries are passed by value, which means if you pass it to a function, or return it from a function, the dictionary is copied.

Dictionaries are collections, and they can be iterated over in loops.
