Como Verificar se os Valores de um Dicionário em Python São do Mesmo Tipo

PythonBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como verificar se todos os valores em um dicionário Python são do mesmo tipo. O laboratório explora o conceito de uniformidade de tipo e demonstra como usar a função all() com type() para verificar se todos os valores em um dicionário compartilham o mesmo tipo de dado.

O laboratório guia você através da criação de scripts Python para explorar a uniformidade de tipo, primeiro criando listas com elementos do mesmo tipo e, em seguida, listas com tipos de dados mistos. Você aprenderá então como aplicar esse conhecimento a dicionários, incluindo o tratamento de dicionários vazios, para determinar se seus valores são do mesmo tipo.

Explorar a Uniformidade de Tipo

Nesta etapa, você aprenderá sobre a uniformidade de tipo em Python. A uniformidade de tipo se refere ao conceito de garantir que todos os elementos dentro de uma coleção, como uma lista ou dicionário, sejam do mesmo tipo de dado. Isso é importante para manter a consistência e evitar erros inesperados em seu código.

Vamos começar criando um script Python para explorar esse conceito.

  1. Abra o editor VS Code no ambiente LabEx.

  2. Crie um novo arquivo chamado type_uniformity.py no diretório ~/project.

    touch ~/project/type_uniformity.py
    
  3. Abra o arquivo type_uniformity.py no editor.

Agora, vamos adicionar algum código ao arquivo type_uniformity.py para criar uma lista com elementos do mesmo tipo.

## Create a list of integers
int_list = [1, 2, 3, 4, 5]

## Print the list
print("List of integers:", int_list)

## Verify the type of each element
for item in int_list:
    print("Type of", item, "is", type(item))

Neste código, criamos uma lista chamada int_list contendo apenas valores inteiros. Em seguida, iteramos pela lista e imprimimos o tipo de cada elemento usando a função type().

Em seguida, vamos criar uma lista com elementos de tipos diferentes.

## Create a list of mixed data types
mixed_list = [1, "hello", 3.14, True]

## Print the list
print("\nList of mixed data types:", mixed_list)

## Verify the type of each element
for item in mixed_list:
    print("Type of", item, "is", type(item))

Neste código, criamos uma lista chamada mixed_list contendo inteiros, strings, floats e booleanos. Em seguida, iteramos pela lista e imprimimos o tipo de cada elemento.

Agora, vamos executar o script para ver a saída.

  1. Abra o terminal no ambiente VS Code.

  2. Navegue até o diretório ~/project.

    cd ~/project
    
  3. Execute o script type_uniformity.py usando o comando python.

    python type_uniformity.py
    

Você deve ver uma saída semelhante à seguinte:

List of integers: [1, 2, 3, 4, 5]
Type of 1 is <class 'int'>
Type of 2 is <class 'int'>
Type of 3 is <class 'int'>
Type of 4 is <class 'int'>
Type of 5 is <class 'int'>

List of mixed data types: [1, 'hello', 3.14, True]
Type of 1 is <class 'int'>
Type of hello is <class 'str'>
Type of 3.14 is <class 'float'>
Type of True is <class 'bool'>

Como você pode ver, a int_list contém elementos do mesmo tipo (int), enquanto a mixed_list contém elementos de tipos diferentes (int, str, float, bool).

Compreender a uniformidade de tipo é crucial para escrever código Python robusto e sustentável. Nas etapas seguintes, você aprenderá como usar a função all() em conjunto com a função type() para verificar a uniformidade de tipo em coleções.

Usar all() com type() nos Valores

Nesta etapa, você aprenderá como usar a função all() em combinação com a função type() para verificar se todos os elementos em uma lista têm o mesmo tipo de dado. Esta é uma técnica poderosa para garantir a uniformidade de tipo em seu código Python.

A função all() retorna True se todos os elementos em um iterável forem verdadeiros. Podemos usar essa função para verificar se uma condição é verdadeira para todos os elementos em uma lista.

Vamos continuar trabalhando com o arquivo type_uniformity.py que você criou na etapa anterior.

  1. Abra o arquivo type_uniformity.py no editor VS Code.

Agora, vamos adicionar algum código para verificar se todos os elementos em uma lista são inteiros usando as funções all() e type().

## List of integers
int_list = [1, 2, 3, 4, 5]

## Check if all elements are integers
all_integers = all(type(item) is int for item in int_list)

## Print the result
print("\nAre all elements in int_list integers?", all_integers)

Neste código, usamos uma expressão geradora (type(item) is int for item in int_list) para criar uma sequência de valores booleanos. Cada valor booleano indica se o elemento correspondente em int_list é um inteiro. A função all() então verifica se todos os valores booleanos na sequência são True.

Em seguida, vamos verificar se todos os elementos em uma lista de tipos de dados mistos são inteiros.

## List of mixed data types
mixed_list = [1, "hello", 3.14, True]

## Check if all elements are integers
all_integers = all(type(item) is int for item in mixed_list)

## Print the result
print("Are all elements in mixed_list integers?", all_integers)

Agora, vamos executar o script para ver a saída.

  1. Abra o terminal no ambiente VS Code.

  2. Navegue até o diretório ~/project.

    cd ~/project
    
  3. Execute o script type_uniformity.py usando o comando python.

    python type_uniformity.py
    

Você deve ver uma saída semelhante à seguinte:

List of integers: [1, 2, 3, 4, 5]
Type of 1 is <class 'int'>
Type of 2 is <class 'int'>
Type of 3 is <class 'int'>
Type of 4 is <class 'int'>
Type of 5 is <class 'int'>

List of mixed data types: [1, 'hello', 3.14, True]
Type of 1 is <class 'int'>
Type of hello is <class 'str'>
Type of 3.14 is <class 'float'>
Type of True is <class 'bool'>

Are all elements in int_list integers? True
Are all elements in mixed_list integers? False

Como você pode ver, a função all() identifica corretamente que todos os elementos em int_list são inteiros, enquanto nem todos os elementos em mixed_list são inteiros.

Esta técnica pode ser usada para verificar a uniformidade de tipo em qualquer lista, independentemente dos tipos de dados que ela contém. Na próxima etapa, você aprenderá como lidar com dicionários vazios ao verificar a uniformidade de tipo.

Lidar com Dicionários Vazios

Nesta etapa, você aprenderá como lidar com dicionários vazios ao verificar a uniformidade de tipo. Um dicionário vazio é um dicionário sem pares chave-valor. Ao verificar a uniformidade de tipo em um dicionário vazio, é importante lidar com este caso de forma adequada para evitar erros.

Vamos continuar trabalhando com o arquivo type_uniformity.py que você criou nas etapas anteriores.

  1. Abra o arquivo type_uniformity.py no editor VS Code.

Agora, vamos adicionar algum código para verificar a uniformidade de tipo em um dicionário vazio.

## Empty dictionary
empty_dict = {}

## Check if the dictionary is empty
if not empty_dict:
    print("\nThe dictionary is empty.")
else:
    ## Check if all values have the same type (this will not be executed for an empty dictionary)
    first_type = type(next(iter(empty_dict.values())))
    all_same_type = all(type(value) is first_type for value in empty_dict.values())
    print("Are all values in the dictionary of the same type?", all_same_type)

Neste código, primeiro verificamos se o dicionário empty_dict está vazio usando a condição if not empty_dict:. Se o dicionário estiver vazio, imprimimos uma mensagem indicando que o dicionário está vazio. Caso contrário, prosseguimos para verificar se todos os valores no dicionário têm o mesmo tipo.

Explicação:

  • if not empty_dict:: Esta condição verifica se o dicionário está vazio. Um dicionário vazio avalia como False em um contexto booleano, então not empty_dict será True se o dicionário estiver vazio.
  • print("\nThe dictionary is empty."): Esta linha imprime uma mensagem indicando que o dicionário está vazio.
  • O bloco else não é executado quando o dicionário está vazio.

Agora, vamos adicionar algum código para verificar a uniformidade de tipo em um dicionário não vazio.

## Dictionary with integer values
int_dict = {"a": 1, "b": 2, "c": 3}

## Check if the dictionary is empty
if not int_dict:
    print("\nThe dictionary is empty.")
else:
    ## Check if all values have the same type
    first_type = type(next(iter(int_dict.values())))
    all_same_type = all(type(value) is first_type for value in int_dict.values())
    print("Are all values in the dictionary of the same type?", all_same_type)

Neste código, criamos um dicionário chamado int_dict com valores inteiros. Em seguida, verificamos se o dicionário está vazio. Se não estiver vazio, obtemos o tipo do primeiro valor no dicionário e verificamos se todos os outros valores têm o mesmo tipo.

Agora, vamos executar o script para ver a saída.

  1. Abra o terminal no ambiente VS Code.

  2. Navegue até o diretório ~/project.

    cd ~/project
    
  3. Execute o script type_uniformity.py usando o comando python.

    python type_uniformity.py
    

Você deve ver uma saída semelhante à seguinte:

List of integers: [1, 2, 3, 4, 5]
Type of 1 is <class 'int'>
Type of 2 is <class 'int'>
Type of 3 is <class 'int'>
Type of 4 is <class 'int'>
Type of 5 is <class 'int'>

List of mixed data types: [1, 'hello', 3.14, True]
Type of 1 is <class 'int'>
Type of hello is <class 'str'>
Type of 3.14 is <class 'float'>
Type of True is <class 'bool'>

Are all elements in int_list integers? True
Are all elements in mixed_list integers? False

The dictionary is empty.
Are all values in the dictionary of the same type? True

Como você pode ver, o código lida corretamente com o dicionário vazio e imprime a mensagem apropriada. Para o dicionário não vazio, ele verifica se todos os valores têm o mesmo tipo e imprime o resultado.

Isso completa o laboratório sobre a exploração da uniformidade de tipo em Python. Você aprendeu como verificar a uniformidade de tipo em listas e dicionários e como lidar com dicionários vazios de forma adequada.

Resumo

Neste laboratório, você explorou o conceito de uniformidade de tipo em Python, que envolve garantir que todos os elementos dentro de uma coleção sejam do mesmo tipo de dado. Você criou um script Python para demonstrar esse conceito, criando uma lista de inteiros e uma lista de tipos de dados mistos, e então imprimindo o tipo de cada elemento usando a função type().

O laboratório destacou a importância da uniformidade de tipo para manter a consistência e evitar erros inesperados no código, mostrando como diferentes tipos de dados podem coexistir dentro de uma única lista e como identificar o tipo de cada elemento.