Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

return.update()

Olá gotaria de entender melhor como funciona a função update. Na internet https://www.geeksforgeeks.org/python-set-update/ encontrei uma explicação falando que transforma set, list, tuples or a dictionary em set para converter em set e adicionar à um set. O que é um set? No site: `# Python program to demonstrate the

use of update() method

list1 = [1, 2, 3] list2 = [5, 6, 7] list3 = [10, 11, 12]

Lists converted to sets

set1 = set(list2) set2 = set(list1)

Update method

set1.update(set2)

Print the updated set

print(set1)

List is passed as an parameter which

gets automatically converted to a set

set1.update(list3) print(set1)`

Por que é necessário realizar a função set() e por que a variável set1 recebe set(list2) e não set(list1)?

2 respostas
solução!

Olá Marcel, tudo bem? Espero que sim!

Primeiramente, é necessário entender os conceitos de list, tuple, set e dictionary em Python.

Um resumo de cada um dos conceitos:

  • List ou lista é uma coleção ordenada de valores, podemos acessar os valores através de um índice que começa em 0. Podem haver elementos repetidos e ela pode ser modificada, acrescentando a ela valores, removendo ou modificando um elemento dentro dela. A ordem dos valores importa, portanto uma lista é diferente de outra lista com os mesmos elementos mas com uma ordem diferente. Utiliza-se os colchetes [] para criar uma lista.

  • Tuple ou tupla é uma coleção ordenada de valores assim como uma lista, porém não podemos alterar uma tupla, nem adicionar novos elementos. Somente podemos reatribuir uma nova tupla a uma variável, substituindo a anterior. Utiliza-se os parênteses () para criar uma tupla.

  • Set ou conjunto é uma coleção de elementos sem ordenação e sem repetição. Cada elemento só aparece uma única vez e caso você adicione um elemento repetido, o conjunto permanece inalterado. Como não há ordem, não podemos acessar os elementos através de um índice, portanto só faz sentido checar se há um elemento dentro do conjunto ou não. Utiliza-se a palavra reservada set() para criar um conjunto ou as chaves {} passando valores separados com vírgula.

  • Dictionary ou dicionários são coleções de elementos sem ordenação e com pares de chaves (keys) e valores (values). Cada chave é única, não havendo repetição. Os valores podem ser acessados através de suas chaves, oa invés de serem acessados pelos índices como na lista. Utiliza-se as chaves {} para criar um dicionário com pares de chave e valor, caso não tenha apenas valores, será criado um set.

O método update existe tanto para os conjuntos (sets) quanto para os dicionários (dictionaries).

No exemplo passado, foram criadas 3 listas iniciais e foi utilizado o comando set() para transformar essas listas para conjuntos. Caso houvessem valores repetidos, eles não entrariam para os conjuntos. A escolha invertida de set1 = set(list2) e set2 = set(list1) foi um caso do exemplo que talvez não tenha ficado tão didático e tenha confundido um pouco, mas não era necessário realizar essa inversão. Somente foi transformada a lista 2 em um conjunto e foi salvo em uma variável chamada set1 e assim por diante.

Ao utilizar o método update para os sets, foram adicionados os valores de um set em outro, sem que haja valores duplicados, já que os conjuntos possuem um único valor de cada tipo.

O método update para os dicionários funciona de forma parecida. Caso você passe como parâmetro uma chave que já exista no dicionário, esse valor será atualizado para o novo valor escolhido. Caso não exista a chave que está passando como parâmetro, essa chave e valor serão adicionados ao dicionário.

Portanto o código a seguir

list1 = [1, 2, 3]
list2 = [5, 6, 7]
list3 = [10, 11, 12]

set1 = set(list2)
set2 = set(list1)

set1.update(set2)

Cria 3 listas, transforma a list2 e list1 em conjuntos set1 = {5,6,7} e set2 = {1,2,3} e depois insere os valores do set2 dentro do set1 através do código set1.update(set2). Logo set1 se torna {5,6,7,1,2,3}, como não importa a ordem dos elementos, é o mesmo que {1, 2, 3, 5, 6, 7}.

Agora um exemplo de um dicionário:

dados = {
    'Crossfox': {'km': 35000, 'ano': 2005}, 
    'DS5': {'km': 17000, 'ano': 2015}, 
    'Fusca': {'km': 130000, 'ano': 1979}, 
    'Jetta': {'km': 56000, 'ano': 2011}, 
    'Passat': {'km': 62000, 'ano': 1999}
}

def km_media(dataset, ano_atual):
    result = {}
    for item in dataset.items():
        media = item[1]['km'] / (ano_atual - item[1]['ano'])
        result.update({ item[0]: media })
    return result

km_media(dados, 2019)

Veja na função que é criado um dicionário vazio result através da atribuição das chaves {}. Ao se passar os dados para a função, foram percorridos os dados.items(), foi realizada uma operação entre a kilometragem, o ano atual e o ano passado 2019 e foi utilizada a função update no dicionário, como ele a princípio está vazio, será adicionada uma chave correspondente ao item[0] e o valor sendo a kilometragem média. Isso será repetido para cada uma das chaves do dicionário dados.

Caso já existisse alguma chave de mesmo nome no dicionário result, o valor seria atualizado com a função update com a nova média calculada para o valor dessa chave.

Espero que tenha tirado sua dúvida.

Estou à disposição. Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Desculpa pela demora. Muito obrigado pela excelente explicação João Vitor. Obrigado pela atenção e por esclarecer os conceitos bem como a função update.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software