---
title: "init(uniqueKeysWithValues:)"
framework: swift
role: symbol
role_heading: Initializer
path: "swift/dictionary/init(uniquekeyswithvalues:)"
---

# init(uniqueKeysWithValues:)

Creates a new dictionary from the key-value pairs in the given sequence.

## Declaration

```swift
init<S>(uniqueKeysWithValues keysAndValues: S) where S : Sequence, S.Element == (Key, Value)
```

## Parameters

- `keysAndValues`: A sequence of key-value pairs to use for the new dictionary. Every key in keysAndValues must be unique.

## Return Value

Return Value A new dictionary initialized with the elements of keysAndValues.

## Discussion

Discussion You use this initializer to create a dictionary when you have a sequence of key-value tuples with unique keys. Passing a sequence with duplicate keys to this initializer results in a runtime error. If your sequence might have duplicate keys, use the Dictionary(_:uniquingKeysWith:) initializer instead. The following example creates a new dictionary using an array of strings as the keys and the integers in a countable range as the values: let digitWords = ["one", "two", "three", "four", "five"] let wordToValue = Dictionary(uniqueKeysWithValues: zip(digitWords, 1...5)) print(wordToValue["three"]!) // Prints "3" print(wordToValue) // Prints "["three": 3, "four": 4, "five": 5, "one": 1, "two": 2]" note: The sequence must not have duplicate keys.

## See Also

### Creating a Dictionary

- [init()](swift/dictionary/init().md)
- [init(minimumCapacity:)](swift/dictionary/init(minimumcapacity:).md)
- [init(_:uniquingKeysWith:)](swift/dictionary/init(_:uniquingkeyswith:).md)
- [init(grouping:by:)](swift/dictionary/init(grouping:by:).md)
