Python Typing Concrete Collections
In Python's typing module, there are several types that correspond to built-in types (such as list
, tuple
and dict
) and types that correspond to types in the collections module (such as DefaultDict
and Counter
). You should consult the official Python documentation here to get a full list of all types. This tutorial shows you exa
List, Dict, Set, Frozenset
Since Python 3.9 you can use the builtins types (list
, dict
, set
, frozenset
) to type-hint
def unique_words(s: str) -> list[str]: """Return a list of the unique words in the given string.""" words = s.split() unique_words = [] for word in words: if word not in unique_words: unique_words.append(word) return unique_words def count_words(s: str) -> dict[str, int]: """Count the number of occurrences of each word in the given string.""" words = s.split() word_counts = {} for word in words: if word in word_counts: word_counts[word] += 1 else: word_counts[word] = 1 return word_counts def intersection(set1: set[int], set2: set[int]) -> set[int]: """Return the intersection of the two given sets.""" return set1 & set2 def intersection(set1: frozenset[int], set2: frozenset[int]) -> frozenset[int]: """Return the intersection of the two given frozen sets.""" return set1 & set2
Deprecated types: List, Dict, Set, FrozenSet
If you are using a Python version prior to 3.9, you will have to use types from the typing
module: typing.List
, typing.Dict
, typing.Set
, typing.FrozenSet
from typing import List, Dict, Set, FrozenSet def unique_words(s: str) -> List[str]: """Return a list of the unique words in the given string.""" words = s.split() unique_words = [] for word in words: if word not in unique_words: unique_words.append(word) return unique_words def count_words(s: str) -> Dict[str, int]: """Count the number of occurrences of each word in the given string.""" words = s.split() word_counts = {} for word in words: if word in word_counts: word_counts[word] += 1 else: word_counts[word] = 1 return word_counts def union(set1: Set[int], set2: Set[int]) -> Set[int]: """Return the union of the two given sets.""" return set1 | set2 def intersection(set1: FrozenSet[int], set2: FrozenSet[int]) -> FrozenSet[int]: """Return the intersection of the two given frozen sets.""" return set1 & set2
Corresponding to types in collections
def count_words(s: str) -> DefaultDict[str, int]: """Count the number of occurrences of each word in the given string and return the results in a default dictionary.""" words = s.split() word_counts = DefaultDict(int) for word in words: word_counts[word] += 1 return word_counts def sort_words(s: str) -> OrderedDict[int, str]: """Count the number of occurrences of each word in the given string and return the results in an ordered dictionary sorted by count.""" words = s.split() word_counts = {} for word in words: if word in word_counts: word_counts[word] += 1 else: word_counts[word] = 1 return OrderedDict(sorted(word_counts.items(), key=lambda item: item[1])) def merge_dicts(dict1: dict, dict2: dict) -> ChainMap: """Merge the two given dictionaries into a single chain map.""" return ChainMap(dict1, dict2) def count_characters(s: str) -> Counter[str]: """Count the number of occurrences of each character in the given string and return the results in a counter.""" return Counter(s) def process_data(data: Deque[int]) -> None: """Process the elements of the given deque.""" while data: # do something with the data data.popleft()