Revisão de Dicionários e Conjuntos
---
id: 67f39babe1e2ec1fb6eea32a
title: Revisão de Dicionários e Conjuntos
challengeType: 31
dashedName: review-dictionaries-and-sets
---
# --description--
Dicionários
- Dicionários: Dicionários são estruturas de dados embutidas que armazenam coleções de pares chave-valor. As chaves precisam ser tipos de dados imutáveis. Esta é a sintaxe geral de um dicionário Python:
dictionary = {
key1: value1,
key2: value2
}
- Construtor
dict(): O construtordict()é uma forma alternativa de construir o dicionário. Você passa uma lista de tuplas como argumento para o construtordict(). Essas tuplas contêm a chave como o primeiro elemento e o valor como o segundo elemento.
pizza = dict([('name', 'Margherita Pizza'), ('price', 8.9), ('calories_per_slice', 250), ('toppings', ['mozzarella', 'basil'])])
- Notação de Colchetes: Para acessar o valor de um par chave-valor, você pode usar a sintaxe conhecida como notação de colchetes.
dictionary[key]
Métodos Comuns de Dicionário
- Método
get(): O métodoget()recupera o valor associado a uma chave. É semelhante à notação de colchetes, mas permite definir um valor padrão, evitando erros se a chave não existir.
dictionary.get(key, default)
- Métodos
keys()evalues(): Os métodoskeys()evalues()retornam um objeto view com todas as chaves e valores no dicionário, respectivamente. Um objeto view é uma forma de ver o conteúdo de um dicionário sem criar uma cópia separada dos dados.
pizza = {
'name': 'Margherita Pizza',
'price': 8.9,
'calories_per_slice': 250
}
pizza.keys()
# dict_keys(['name', 'price', 'calories_per_slice'])
pizza.values()
# dict_values(['Margherita Pizza', 8.9, 250])
- Método
items(): O métodoitems()retorna um objeto view com todos os pares chave-valor no dicionário, incluindo tanto as chaves quanto os valores.
pizza.items()
# dict_items([('name', 'Margherita Pizza'), ('price', 8.9), ('calories_per_slice', 250)])
- Método
clear(): O métodoclear()remove todos os pares chave-valor do dicionário.
pizza.clear()
- Método
pop(): O métodopop()remove o par chave-valor com a chave especificada como o primeiro argumento e retorna seu valor. Se a chave não existir, ele retorna o valor padrão especificado como o segundo argumento. Se a chave não existir e o valor padrão não for especificado, umKeyErroré gerado.
pizza.pop('price', 10)
pizza.pop('total_price') # KeyError
- Método
popitem(): No Python 3.7 e versões superiores, o métodopopitem()remove o último item inserido.
pizza.popitem()
- Método
update(): O métodoupdate()atualiza os pares chave-valor com os pares chave-valor de outro dicionário. Se eles tiverem chaves em comum, seus valores serão sobrescritos. Novas chaves serão adicionadas ao dicionário como novos pares chave-valor.
pizza.update({ 'price': 15, 'total_time': 25 })
Iterando Sobre um Dicionário
- Iterando Sobre Valores: Se você precisar iterar sobre os valores em um dicionário, pode escrever um loop
forcomvalues()para obter todos os valores de um dicionário.
products = {
'Laptop': 990,
'Smartphone': 600,
'Tablet': 250,
'Headphones': 70,
}
for price in products.values():
print(price)
Resultado:
990
600
250
70
- Iterando Sobre Chaves: Se você precisar iterar sobre as chaves no dicionário
productsacima, você pode escreverproducts.keys()ouproductsdiretamente.
for product in products.keys():
print(product)
# Or
for product in products:
print(product)
Resultado:
Laptop
Smartphone
Tablet
Headphones
- Iterando Sobre Pares Chave-Valor: Se você precisar iterar sobre as chaves e seus valores correspondentes simultaneamente, você pode iterar sobre
products.items(). Você obtém tuplas individuais com as chaves e seus valores correspondentes.
for product in products.items():
print(product)
Resultado:
('Laptop', 990)
('Smartphone', 600)
('Tablet', 250)
('Headphones', 70)
Para armazenar a chave e o valor em variáveis de loop separadas, você precisa separá-las com uma vírgula. A primeira variável armazena a chave e a segunda armazena o valor.
for product, price in products.items():
print(product, price)
Resultado:
Laptop 990
Smartphone 600
Tablet 250
Headphones 70
- Função
enumerate(): Se você precisa iterar sobre um dicionário enquanto mantém o controle de um contador, pode chamar a funçãoenumerate(). A função retorna um objetoenumerate, que atribui um inteiro a cada item, como um contador. Você pode iniciar o contador a partir de qualquer número, mas por padrão, ele começa em 0.
enumerate(). Por exemplo, com products.items(), você pode obter o par chave-valor inteiro além do índice:
for index, product in enumerate(products.items()):
print(index, product)
Resultado:
0 ('Laptop', 990)
1 ('Smartphone', 600)
2 ('Tablet', 250)
3 ('Headphones', 70)
Para personalizar o valor inicial do count, você pode passar um segundo argumento para o enumerate(). Por exemplo, aqui estamos começando a contagem a partir de 1.
for index, product in enumerate(products.items(), 1):
print(index, product)
Resultado:
1 ('Laptop', 990)
2 ('Smartphone', 600)
3 ('Tablet', 250)
4 ('Headphones', 70)
Conjuntos
- Conjuntos: Conjuntos são estruturas de dados embutidas em Python que não permitem valores duplicados. Conjuntos são mutáveis e não ordenados, o que significa que seus elementos não são armazenados em uma ordem específica, então você não pode usar índices ou chaves para acessá-los. Além disso, conjuntos só podem conter valores de tipos de dados imutáveis, como números, strings e tuplas.
- Definindo um Conjunto: Para definir um conjunto, você precisa escrever seus elementos dentro de chaves e separá-los com vírgulas.
my_set = {1, 2, 3, 4, 5}
- Definindo um Conjunto Vazio: Se você precisar definir um conjunto vazio, deve usar a função
set(). Apenas escrever chaves vazias criará automaticamente um dicionário.
set() # Set
{} # Dictionary
Métodos Comuns de Conjunto
- Método
add(): Você pode adicionar um elemento a um conjunto com o métodoadd(), passando o novo elemento como argumento.
my_set.add(6)
- Métodos
remove()ediscard(): Para remover um elemento de um conjunto, você pode usar o métodoremove()ou o métododiscard(), passando o elemento que deseja remover como argumento. O métodoremove()gerará umKeyErrorse o elemento não for encontrado e o métododiscard()não gerará.
my_set.remove(4)
my_set.discard(4)
- Método
clear(): O métodoclear()remove todos os elementos do conjunto.
my_set.clear()
Operações Matemáticas de Conjuntos
- Métodos
issubset()eissuperset(): Os métodosissubset()eissuperset()verificam se um conjunto é um subconjunto ou superconjunto de outro conjunto, respectivamente.
my_set = {1, 2, 3, 4, 5}
your_set = {2, 3, 4, 5}
print(your_set.issubset(my_set)) # True
print(my_set.issuperset(your_set)) # True
- Método
isdisjoint(): O métodoisdisjoint()verifica se dois conjuntos são disjuntos, se eles não têm elementos em comum.
my_set = {1, 2, 3}
your_set = {4, 5, 6}
print(my_set.isdisjoint(your_set)) # True
- Operador de União (
|): O operador de união|retorna um novo conjunto com todos os elementos de ambos os conjuntos.
my_set = {1, 2, 3}
your_set = {4, 5, 6}
my_set | your_set # {1, 2, 3, 4, 5, 6}
- Operador de Interseção (
&): O operador de interseção&retorna um novo conjunto com apenas os elementos que os conjuntos têm em comum.
my_set = {1, 2, 3, 4, 5}
your_set = {2, 3, 4, 6}
my_set & your_set # {2, 3, 4}
- Operador de Diferença (
-): O operador de diferença-retorna um novo conjunto com os elementos do primeiro conjunto que não estão nos outros conjuntos.
my_set = {1, 2, 3, 4, 5}
your_set = {2, 3, 4, 6}
my_set - your_set # {1, 5}
- Operador de Diferença Simétrica (
^): O operador de diferença simétrica^retorna um novo conjunto com os elementos que estão no primeiro ou no segundo conjunto, mas não em ambos.
my_set = {1, 2, 3, 4, 5}
your_set = {2, 3, 4, 6}
my_set ^ your_set # {1, 5, 6}
- Operador
in: Você pode verificar se um elemento está em um conjunto ou não com o operadorin.
print(5 in my_set) # True
Biblioteca Padrão do Python
- Biblioteca Padrão do Python: Uma biblioteca oferece código pré-escrito e reutilizável, como funções, classes e estruturas de dados, que você pode reutilizar em seus projetos. Python possui uma extensa biblioteca padrão com módulos integrados que implementam soluções padronizadas para muitos problemas e tarefas. Alguns exemplos de módulos integrados populares são
math,random,re(abreviação de "regular expressions") edatetime.
Declaração de Importação
- Declaração de Importação: Para acessar os elementos definidos em módulos embutidos, você usa uma declaração de importação. Declarações de importação geralmente são escritas no topo do arquivo. Declarações de importação funcionam da mesma forma para funções, classes, constantes, variáveis e quaisquer outros elementos definidos no módulo.
- Declaração Básica de Importação: Você pode usar a palavra-chave
importseguida pelo nome do módulo:
import module_name
Então, se você precisar fazer uma chamada de uma função desse módulo, você usaria a notação de ponto, com o nome do módulo seguido pelo nome da função.
module_name.function_name()
Por exemplo, você escreveria o seguinte no seu código para importar o módulo math e obter a raiz quadrada de 36:
import math
math.sqrt(36)
- Importando um Módulo com um Nome Diferente: Se você precisar importar o módulo com um nome diferente (também conhecido como "alias"), você pode usar
asseguido do alias no final da declaração de importação. Isso é frequentemente usado para nomes de módulos longos ou para evitar conflitos de nomes.
import module_name as module_alias
Por exemplo, para se referir ao módulo math como m no seu código, você pode atribuir um alias assim:
import math as m
Então, você pode acessar os elementos do módulo usando o alias:
m.sqrt(36)
- Importando Elementos Específicos: Se você não precisa de tudo de um módulo, pode importar elementos específicos usando
from. Nesse caso, a declaração de importação começa comfrom, seguida pelo nome do módulo, depois a palavra-chaveimporte finalmente os nomes dos elementos que você deseja importar.
from module_name import name1, name2
Então, você pode usar esses nomes sem o prefixo do módulo no seu script Python. Por exemplo:
from math import radians, sin, cos
angle_degrees = 40
angle_radians = radians(angle_degrees)
sine_value = sin(angle_radians)
cos_value = cos(angle_radians)
print(sine_value) # 0.6427876096865393
print(cos_value) # 0.766044443118978
Isso é útil, mas pode resultar em conflitos de nomes se você já tiver funções ou variáveis com o mesmo nome. Tenha isso em mente ao escolher qual tipo de declaração de importação você quer usar.
Se você precisar atribuir aliases a esses nomes, também pode fazer isso usando a palavra-chave as seguida do alias.
from module_name import name1 as alias1, name2 as alias2
- Declaração de Importação com Asterisco (
*): O asterisco indica ao Python que você quer importar tudo naquele módulo, mas quer importar de forma que não precise usar o nome do módulo como prefixo.
from module_name import *
Por exemplo, se você usar isso para importar o módulo math, você poderá chamar qualquer função definida nesse módulo sem especificar o nome do módulo como prefixo.
from math import *
print(sqrt(36)) # 6.0
No entanto, isso geralmente é desencorajado porque pode levar a colisões de namespace e dificultar saber de onde os nomes vêm.
if __name__ == '__main__'
- Variável
__name__:__name__é uma variável interna especial no Python. Quando um arquivo Python é executado diretamente, o Python define o valor dessa variável para a string"__main__". Mas se o arquivo Python for importado como um módulo em outro script Python, o valor da variável__name__é definido como o nome desse módulo.
if __name__ == '__main__':
# Code
# --assignment--
Revise os tópicos e conceitos de Dictionaries e Sets.