CodeGym /Curso Java /Python SELF PT /Coleção Dictionary

Coleção Dictionary

Python SELF PT
Nível 11 , Lição 1
Disponível

1.1 Dicionário e suas propriedades

Dicionário (dictionary) em Python é uma coleção ordenada de pares chave-valor, onde cada chave é única. Os dicionários são um dos tipos de dados mais flexíveis e poderosos em Python, usados para armazenar e gerenciar dados. Vamos usá-los muito frequentemente, quase tanto quanto listas. Logo você mesmo vai perceber :)

Principais propriedades dos dicionários:

1. Chaves únicas

Cada chave em um dicionário deve ser única. Se um par chave-valor com uma chave que já existe for adicionado ao dicionário, o valor antigo será substituído pelo novo. Por exemplo, se você quiser armazenar dados sobre alunos e usar seus IDs como chaves:


students = {"123": "John", "124": "Alice", "123": "Mike"}
print(students)  # Vai imprimir: {'123': 'Mike', '124': 'Alice'}

2. Ordenação

Importante! Antes da versão Python 3.7, os dicionários eram coleções não ordenadas, ou seja, a ordem dos elementos não era garantida. A partir do Python 3.7, os dicionários mantêm a ordem de adição dos elementos, mas esse aspecto não era parte obrigatória da especificação da linguagem até a versão Python 3.8, quando se tornou padrão.

Isso foi há 5 anos. Estamos estudando Python baseado na versão 3.12, então você pode considerar o dicionário como um conjunto ordenado de elementos.

3. Mutabilidade

Os dicionários são mutáveis, o que significa que você pode adicionar, modificar ou remover elementos após a criação do dicionário. Por exemplo, vamos adicionar um endereço ao aluno:


student = {"name": "John", "age": 20}
student["address"] = "123 Main St"
print(student)  # Vai imprimir: {'name': 'John', 'age': 20, 'address': '123 Main St'}

4. Eficiência

Os dicionários são otimizados para busca rápida, adição e remoção de pares chave-valor. Em média, as operações de busca, adição e remoção são realizadas em tempo constante, O(1). O que é complexidade de algoritmos você vai aprender um pouco mais tarde, quando estudarmos os tópicos "Algoritmos e estruturas de dados".

5. Chaves e valores

As chaves em um dicionário podem ser de qualquer tipo de dados imutável, como strings, números ou tuplas. Os valores podem ser de qualquer tipo de dados, inclusive outros dicionários.

6. Métodos de acesso e modificação

Os dicionários suportam vários métodos para acessar elementos, adicionar, modificar e remover pares chave-valor. Alguns desses métodos incluem get(), keys(), values(), items(), update(), pop(), entre outros. Mais detalhes nas próximas aulas.

7. Iteração de elementos

Você pode iterar chaves, valores ou pares chave-valor em um dicionário usando loops. Isso facilita a realização de operações sobre os elementos do dicionário. Por exemplo:


student = {"name": "John", "age": 20, "address": "123 Main St"}
for key, value in student.items():
    print(f"{key}: {value}")

A saída será:

name: John
age: 20
address: 123 Main St

8. Hashabilidade das chaves

As chaves em um dicionário devem ser hasháveis (do inglês hash). Isso significa que as chaves devem ter um valor de hash que não muda durante sua vida. O valor de hash é obtido através de uma função de hash, um algoritmo que transforma dados de entrada de comprimento arbitrário em um valor de saída de comprimento fixo. É isso que chamamos de valor de hash ou código hash. Tipos de dados imutáveis, como strings, números e tuplas, são hasháveis e podem ser usados como chaves.

Aprenderemos mais sobre funções de hash e hashabilidade no tópico "Algoritmos e estruturas de dados".

1.2 Criando um dicionário usando {}

Dicionários (dictionaries) em Python podem ser criados de várias maneiras. Aqui estão diferentes maneiras de criar um objeto dicionário com exemplos:

Usando chaves {}

A maneira mais comum de criar um dicionário é usando chaves com pares chave-valor separados por vírgulas. O próprio par chave-valor é separado por dois pontos.


# Criando um dicionário vazio
empty_dict = {}

# Criando um dicionário com elementos
person = {
    "name": "John",
    "age": 30,
    "city": "New York"
}
print(type(person))
print(person)

Importante! Criar um dicionário é semelhante a criar um conjunto. Na verdade, você pode até mesmo considerar um dicionário como um conjunto de chaves, às quais estão vinculados valores.

Se nas chaves apenas os "keys" estiverem listados, então um conjunto é criado; se após as chaves houver dois pontos e valores indicados, então um dicionário é criado. As chaves vazias são sempre um dicionário.


# Criando um dicionário vazio
empty_dict = {}

# Criando um conjunto com elementos
unique_items = {
    "name",
    "age",
    "city"
}
print(type(unique_items))
print(unique_items)

1.3 Criando um dicionário usando a função dict()

A função dict() pode ser usada para criar um dicionário de uma sequência de pares chave-valor, bem como de argumentos nomeados.

Exemplo com uma sequência de pares chave-valor:


# Criando um dicionário a partir de uma lista de tuplas
person = dict([("name", "John"), ("age", 30), ("city", "New York")])
print(person)

Exemplo com argumentos nomeados. As chaves adicionais não são necessárias aqui:


# Criando um dicionário com argumentos nomeados
person = dict(name="John", age=30, city="New York")
print(person)

Usando o método dict.fromkeys()

O método fromkeys() cria um dicionário com as chaves fornecidas e um valor padrão.


# Criando um dicionário com chaves e valor padrão
keys = ["name", "age", "city"]
default_value = None
person = dict.fromkeys(keys, default_value) 
print(person)

O dicionário terá três chaves, mas todas conterão o mesmo valor.

1.4 Criando um dicionário a partir de variáveis existentes

Os dicionários podem ser criados usando variáveis como chaves e valores.


# Criando um dicionário a partir de variáveis
name = "John"
age = 30
city = "New York"

person = {"name": name, "age": age, "city": city}
print(person)

1.5 Usando geradores de dicionários

Geradores de dicionários permitem criar dicionários com estruturas curtas e concisas, semelhantes aos geradores de listas.


# Criando um dicionário usando um gerador de dicionário
squares = {x: x**2 for x in range(1, 6)}
print(squares)

1.6 Acessando valores em um dicionário

Para obter um valor por chave, usa-se a sintaxe []:


# Acessando valores em um dicionário
person = {"name": "John", "age": 30, "city": "New York"}
print(person["name"])  # Vai imprimir: John

Importante! Se a chave não for encontrada, ocorrerá um erro KeyError. Para evitar isso, pode-se usar o método get(), que retorna o valor da chave se ela existir, ou None (ou outro valor padrão) se a chave não for encontrada.


# Usando o método get() para acessar valores em um dicionário
person = {"name": "John", "age": 30, "city": "New York"}
print(person.get("name"))  # Vai imprimir: John
print(person.get("address", "Endereço não encontrado"))  # Vai imprimir: Endereço não encontrado

1.7 Mudando valores em um dicionário

Os valores em um dicionário podem ser modificados acessando-os pela chave e atribuindo um novo valor.


# Mudando valores em um dicionário
person = {"name": "John", "age": 30, "city": "New York"}
person["age"] = 31
print(person)  # Vai imprimir: {'name': 'John', 'age': 31, 'city': 'New York'}

1.8 Removendo elementos de um dicionário

Os elementos podem ser removidos usando o operador del ou o método pop().


# Removendo um elemento usando del
person = {"name": "John", "age": 30, "city": "New York"}
del person["age"]
print(person)  # Vai imprimir: {'name': 'John', 'city': 'New York'}

# Removendo um elemento usando pop()
person = {"name": "John", "age": 30, "city": "New York"}
age = person.pop("age")
print(person)  # Vai imprimir: {'name': 'John', 'city': 'New York'}
print(age)     # Vai imprimir: 30

1.9 Verificando a existência de uma chave em um dicionário

Você pode verificar se uma chave está contida em um dicionário usando o operador in.


# Verificando a existência de uma chave em um dicionário
person = {"name": "John", "age": 30, "city": "New York"}
print("name" in person)  # Vai imprimir: True
print("address" in person)  # Vai imprimir: False

1.10 Iteração de elementos em um dicionário

Você pode iterar chaves, valores ou pares chave-valor em um dicionário:


# Iterando chaves de um dicionário
person = {"name": "John", "age": 30, "city": "New York"}
for key in person:
    print(key)

# Iterando valores de um dicionário
for value in person.values():
    print(value)

# Iterando pares chave-valor de um dicionário
for key, value in person.items():
    print(f"{key}: {value}")

1.11 Exemplos de uso de dicionários em tarefas reais

Vamos considerar alguns exemplos da vida real onde o uso de dicionários pode ser útil:

Exemplo 1: Contagem de frequência de palavras em um texto

Suponha que temos um texto e queremos contar quantas vezes cada palavra aparece nesse texto.


text = "hello world hello"
word_count = {}
for word in text.split():
    if word in word_count:
        word_count[word] += 1
    else:
        word_count[word] = 1
print(word_count)  # Vai imprimir: {'hello': 2, 'world': 1}

Exemplo 2: Armazenamento de dados de estudantes

Podemos usar um dicionário para armazenar dados sobre estudantes, onde as chaves serão seus IDs e os valores serão seus dados.


students = {
    "123": {"name": "John", "age": 20, "major": "Computer Science"},
    "124": {"name": "Alice", "age": 22, "major": "Mathematics"}
}
print(students["123"]["name"])  # Vai imprimir: John

Exemplo 3: Lista telefônica

Os dicionários podem ser usados para criar uma lista telefônica simples, onde as chaves serão os nomes e os valores os números de telefone.


phone_book = {
    "John": "123-456-7890",
    "Alice": "987-654-3210"
}
print(phone_book["Alice"])  # Vai imprimir: 987-654-3210
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION