W3docs

Acessar Itens de um Set

Aprenda a acessar itens de sets em Python usando iteração, teste de pertencimento e conversão, com exemplos claros e explicações detalhadas.

Os sets em Python são coleções não ordenadas de elementos únicos. Como os sets não possuem ordem garantida, eles não suportam indexação, fatiamento ou outro tipo de acesso sequencial. Este capítulo aborda todas as técnicas práticas para ler elementos de um set: iteração, teste de pertencimento, conversão para lista e alguns padrões do mundo real que mostram por que cada abordagem é importante.

Por Que Não É Possível Indexar um Set

Tentar acessar um elemento de um set por posição levanta um TypeError imediatamente:

Indexar um set gera TypeError

python— editable, runs on the server

Isso é intencional. Os sets armazenam elementos em uma tabela hash, e não em uma sequência, portanto não existe uma posição "primeira" ou "segunda" estável. A ordenação que você vê ao imprimir um set pode mudar entre versões do Python e até entre execuções diferentes.

Iterar Sobre um Set

A forma padrão de visitar cada elemento é com um laço for. Como a ordem não é garantida, os elementos podem aparecer em qualquer sequência a cada execução do laço.

Iterar sobre cada elemento de um set

python— editable, runs on the server

Saída típica (a ordem pode variar):

cherry
banana
apple

Coletar resultados durante a iteração

Você pode construir uma nova lista de valores transformados ao iterar:

Construir uma lista de frutas em maiúsculas a partir de um set

my_set = {"apple", "banana", "cherry"}
upper_fruits = [item.upper() for item in my_set]
print(upper_fruits)  # e.g. ['CHERRY', 'BANANA', 'APPLE']

A compreensão de lista funciona porque ela apenas solicita ao set um elemento por vez — nenhum índice é necessário.

Teste de Pertencimento com in e not in

A maneira mais rápida e comum de verificar se um valor existe em um set é o operador in. Como os sets são baseados em uma tabela hash, essa verificação roda em tempo O(1) em média — muito mais rápido do que percorrer uma lista.

Verificar se um elemento está em um set

python— editable, runs on the server

Use not in para testar a ausência:

Verificar se um elemento está ausente de um set

fruits = {"apple", "banana", "cherry"}
search = "mango"

if search not in fruits:
    print(f"{search} is not in the collection")
# mango is not in the collection

Exemplo prático: deduplicar e filtrar uma lista

Um padrão comum combina sets com teste de pertencimento para filtrar uma lista em relação a outra:

Manter apenas itens de uma lista que não estão em um set conhecido

seen = {"apple", "cherry"}
candidates = ["apple", "mango", "banana", "cherry", "kiwi"]

new_items = [item for item in candidates if item not in seen]
print(new_items)  # ['mango', 'banana', 'kiwi']

Isso é muito mais rápido do que if item not in seen_list quando seen é grande.

Converter um Set em Lista para Acesso por Índice

Quando você realmente precisa de acesso posicional, converta o set em uma lista primeiro. Tenha em mente que a ordem resultante é arbitrária, a menos que você ordene explicitamente.

Converter um set em uma lista ordenada e acessar por índice

my_set = {"cherry", "apple", "banana"}
sorted_list = sorted(my_set)     # ['apple', 'banana', 'cherry']
print(sorted_list[0])            # apple
print(sorted_list[-1])           # cherry

sorted() sempre retorna uma nova lista; o set original permanece inalterado.

Usando any() e all() com Sets

any() e all() funcionam com qualquer iterável, incluindo sets, e permitem testar condições em todos os elementos sem escrever um laço explícito.

Testar se algum ou todos os elementos satisfazem uma condição

numbers = {2, 4, 6, 8}

print(any(n > 5 for n in numbers))   # True  (6 and 8 are > 5)
print(all(n % 2 == 0 for n in numbers))  # True  (all are even)

Obter um Único Elemento Arbitrário

Se você só precisa de um elemento e não se importa com qual, pode usar next() com iter():

Visualizar um elemento sem modificar o set

my_set = {"apple", "banana", "cherry"}
first = next(iter(my_set))
print(first)  # one of the three fruits — which one is unspecified

Esse é um padrão comum quando você precisa inspecionar um set que sabe não estar vazio, sem consumi-lo ou modificá-lo.

Resumo das Técnicas de Acesso

TécnicaUse quando…
for item in my_setVocê precisa visitar cada elemento
item in my_setVocê precisa verificar pertencimento (O(1))
item not in my_setVocê precisa verificar ausência
sorted(my_set)[i]Você precisa de acesso posicional (ordena primeiro)
next(iter(my_set))Você precisa de um elemento arbitrário
any() / all()Você precisa testar uma condição em todos os elementos

Capítulos Relacionados

Prática

Prática
What are the ways to access set items in Python?
What are the ways to access set items in Python?
Was this page helpful?