import%20marimo%0A%0A__generated_with%20%3D%20%220.8.3%22%0Aapp%20%3D%20marimo.App(width%3D%22medium%22)%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%20%20%20%20return%20mo%2C%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22Python%20tem%20outros%20tipos%20compostos%20al%C3%A9m%20de%20listas%20e%20tuplas.%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%20Conjuntos%0A%0A%20%20%20%20%20%20%20%20Python%20implementa%20conjuntos%20semelhantes%20aos%20conjuntos%20da%20matem%C3%A1tica%3A%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%23%20Constru%C3%A7%C3%A3o%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20compras%20%3D%20%7B'ma%C3%A7%C3%A3'%2C%20'banana'%2C%20'ma%C3%A7%C3%A3'%7D%0A%20%20%20%20compras%0A%20%20%20%20return%20compras%2C%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20vendas%20%3D%20set(%5B'ma%C3%A7%C3%A3'%2C%20'banana'%2C%20'ma%C3%A7%C3%A3'%2C%20'cenoura'%2C%20'abacaxi'%5D)%0A%20%20%20%20vendas%0A%20%20%20%20return%20vendas%2C%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%23%20Opera%C3%A7%C3%B5es%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(compras)%3A%0A%20%20%20%20'ma%C3%A7%C3%A3'%20in%20compras%2C%20'abacaxi'%20in%20compras%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20fatores_12%20%3D%20%5B1%2C%202%2C%202%2C%203%5D%0A%20%20%20%20fatores_unicos_12%20%3D%20set(fatores_12)%0A%20%20%20%20fatores_unicos_12%0A%20%20%20%20return%20fatores_12%2C%20fatores_unicos_12%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20fatores_45%20%3D%20%5B1%2C%203%2C%203%2C%205%5D%0A%20%20%20%20fatores_unicos_45%20%3D%20set(fatores_45)%0A%20%20%20%20fatores_unicos_45%0A%20%20%20%20return%20fatores_45%2C%20fatores_unicos_45%0A%0A%0A%40app.cell%0Adef%20__(fatores_12%2C%20fatores_45)%3A%0A%20%20%20%20fatores_12%20-%20fatores_45%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(fatores_unicos_12%2C%20fatores_unicos_45)%3A%0A%20%20%20%20fatores_unicos_12%20-%20fatores_unicos_45%2C%20fatores_unicos_12.difference(fatores_unicos_45)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(fatores_unicos_12%2C%20fatores_unicos_45)%3A%0A%20%20%20%20fatores_unicos_45%20-%20fatores_unicos_12%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(fatores_unicos_12%2C%20fatores_unicos_45)%3A%0A%20%20%20%20fatores_unicos_12%20%7C%20fatores_unicos_45%2C%20fatores_unicos_12.union(fatores_unicos_45)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(fatores_unicos_12%2C%20fatores_unicos_45)%3A%0A%20%20%20%20fatores_unicos_12%20%26%20fatores_unicos_45%2C%20set.intersection(fatores_unicos_12%2C%20fatores_unicos_45)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(fatores_unicos_12%2C%20fatores_unicos_45)%3A%0A%20%20%20%20fatores_unicos_12%20%5E%20fatores_unicos_45%2C%20set.symmetric_difference(fatores_unicos_12%2C%20fatores_unicos_45)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20import%20random%0A%20%20%20%20return%20random%2C%0A%0A%0A%40app.cell%0Adef%20__(random)%3A%0A%20%20%20%20bingo%20%3D%20set()%20%20%23%20n%C3%A3o%20podemos%20usar%20%7B%7D%0A%20%20%20%20for%20_%20in%20range(5)%3A%0A%20%20%20%20%20%20%20%20bingo.add(random.randrange(100))%0A%20%20%20%20bingo%0A%20%20%20%20return%20bingo%2C%0A%0A%0A%40app.cell%0Adef%20__(bingo%2C%20random)%3A%0A%20%20%20%20bingo2%20%3D%20%7Brandom.randrange(100)%20for%20_%20in%20range(5)%7D%0A%20%20%20%20for%20n%20in%20bingo2%3A%0A%20%20%20%20%20%20%20%20print(n)%0A%20%20%20%20print(bingo.remove(2))%20%23%20prefira%20set.discard%0A%20%20%20%20while%20bingo2%3A%0A%20%20%20%20%20%20%20%20print(bingo2.pop())%0A%20%20%20%20return%20bingo2%2C%20n%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%20Dicion%C3%A1rios%0A%0A%20%20%20%20%20%20%20%20Dicion%C3%A1rios%20s%C3%A3o%20estruturas%20de%20mapeamento%20ou%20associa%C3%A7%C3%A3o%3B%20podem%20ser%20vistos%20como%20um%20conjunto%20de%20pares%20(chave%2C%20valor)%2C%20em%20que%20as%20chaves%20devem%20ser%20%C3%BAnicas.%20Tamb%C3%A9m%20podem%20ser%20vistos%20como%20fun%C3%A7%C3%B5es%20de%20um%20conjunto%20de%20chaves%20para%20um%20conjunto%20de%20valores.%0A%0A%20%20%20%20%20%20%20%20Ao%20passo%20que%20listas%20e%20tuplas%20(sequ%C3%AAncias%20em%20geral)%20s%C3%A3o%20indexadas%20por%20inteiros%2C%20dicion%C3%A1rios%20s%C3%A3o%20indexados%20por%20chaves%2C%20que%20devem%20ser%20imut%C3%A1veis.%20**Lembre-se**%3A%20listas%20s%C3%A3o%20mut%C3%A1veis%2C%20portanto%20n%C3%A3o%20podemos%20ter%20lista%20como%20chave%20de%20um%20dicion%C3%A1rio.%20Dicion%C3%A1rios%20tamb%C3%A9m%20s%C3%A3o%20mut%C3%A1veis%20(como%20veremos)%2C%20ent%C3%A3o%20um%20dicion%C3%A1rio%20n%C3%A3o%20pode%20ser%20chave%20de%20um%20outro%20dicion%C3%A1rio.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20compras_dict%20%3D%20%7B'ma%C3%A7%C3%A3'%3A%205%2C%20'banana'%3A%2012%2C%20'ma%C3%A7%C3%A3'%3A%204%7D%0A%20%20%20%20compras_dict%0A%20%20%20%20return%20compras_dict%2C%0A%0A%0A%40app.cell%0Adef%20__(compras_dict)%3A%0A%20%20%20%20compras_dict%5B'ma%C3%A7%C3%A3'%5D%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20estoque%20%3D%20dict(ma%C3%A7%C3%A3%3D1232%2C%20banana%3D3254%2C%20abacaxi%3D200%2C%20cenoura%3D1200)%0A%20%20%20%20estoque%0A%20%20%20%20return%20estoque%2C%0A%0A%0A%40app.cell%0Adef%20__(estoque)%3A%0A%20%20%20%20'ma%C3%A7%C3%A3'%20in%20estoque%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20estoque_inicial%20%3D%20%7B%7D%0A%20%20%20%20estoque_inicial%5B'ma%C3%A7%C3%A3'%5D%20%3D%20300%0A%20%20%20%20print(estoque_inicial)%0A%20%20%20%20estoque_inicial%5B'ma%C3%A7%C3%A3'%5D%20%3D%20estoque_inicial%5B'ma%C3%A7%C3%A3'%5D%20%2B%20200%0A%20%20%20%20print(estoque_inicial)%0A%20%20%20%20del%20estoque_inicial%5B'ma%C3%A7%C3%A3'%5D%0A%20%20%20%20print(estoque_inicial)%0A%20%20%20%20return%20estoque_inicial%2C%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22Voc%C3%AA%20deve%20ter%20notado%20que%20dicion%C3%A1rios%20s%C3%A3o%20muito%20parecidos%20com%20as%20listas%20de%20tuplas%20que%20discutimos%20anteriormente.%20De%20fato%2C%20ambos%20s%C3%A3o%20tipos%20isom%C3%B3rficos%2C%20mas%20a%20grande%20diferen%C3%A7a%20est%C3%A1%20na%20performance%3A%20a%20opera%C3%A7%C3%A3o%20de%20busca%20por%20exemplo%20%C3%A9%20muito%20mais%20r%C3%A1pida%20em%20dicion%C3%A1rios%20(controlando%20para%20o%20tamanho%20do%20dicion%C3%A1rio%2Flista)%2C%20mesmo%20que%20fa%C3%A7amos%20busca%20bin%C3%A1ria%20numa%20lista%20de%20pares%20com%20chaves%20ordenadas.%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20_d%20%3D%20dict(%5B('Alan'%2C%201912)%2C%20('Ada'%2C%201815)%5D)%0A%20%20%20%20_d%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(estoque_inicial)%3A%0A%20%20%20%20estoque_inicial%5B'abacaxi'%5D%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(estoque_inicial)%3A%0A%20%20%20%20estoque_inicial.get('abacaxi'%2C%200)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(estoque)%3A%0A%20%20%20%20for%20produto%20in%20estoque%3A%0A%20%20%20%20%20%20%20%20print(produto%2C%20estoque%5Bproduto%5D)%0A%20%20%20%20return%20produto%2C%0A%0A%0A%40app.cell%0Adef%20__(estoque)%3A%0A%20%20%20%20for%20num%20in%20estoque.values()%3A%0A%20%20%20%20%20%20%20%20print(num)%0A%20%20%20%20return%20num%2C%0A%0A%0A%40app.cell%0Adef%20__(estoque)%3A%0A%20%20%20%20for%20p%2C%20n_p%20in%20estoque.items()%3A%0A%20%20%20%20%20%20%20%20print(p%2C%20n_p)%0A%20%20%20%20return%20n_p%2C%20p%0A%0A%0A%40app.cell%0Adef%20__(estoque)%3A%0A%20%20%20%20len(estoque)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20balances%20%3D%20%7B'Geralt'%3A%20114%2C%20'Dandelion'%3A%20-40%2C%20'Ciri'%3A%20-74%7D%0A%0A%20%20%20%20while%20balances%3A%20%20%23%20um%20dicion%C3%A1rio%20n%C3%A3o-vazio%20%C3%A9%20equivalente%20%C3%A0%20True%0A%20%20%20%20%20%20%20%20(name%2C%20balance)%20%3D%20balances.popitem()%20%23%20remove%20um%20item%20do%20dicion%C3%A1rio%0A%20%20%20%20%20%20%20%20print(name%2C%20balance)%0A%20%20%20%20return%20balance%2C%20balances%2C%20name%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%20Exerc%C3%ADcios%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%23%23%20Ex.%201%0A%0A%20%20%20%20%20%20%20%20Escreva%20uma%20fun%C3%A7%C3%A3o%20que%20recebe%20uma%20lista%20e%20uma%20fun%C3%A7%C3%A3o%20e%20retorna%20um%20dicion%C3%A1rios%20cujas%20chaves%20s%C3%A3o%20os%20resultados%20da%20aplica%C3%A7%C3%A3o%20da%20fun%C3%A7%C3%A3o%20nos%20elementos%20da%20lista%2C%20e%20cujos%20valores%20s%C3%A3o%20os%20elementos%20da%20lista%20associados%20ao%20resultado%20da%20aplica%C3%A7%C3%A3o%20da%20fun%C3%A7%C3%A3o.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20def%20group_by(f%2C%20xs)%3A%0A%20%20%20%20%20%20%20%20pass%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20return%20group_by%2C%0A%0A%0A%40app.cell%0Adef%20__(group_by)%3A%0A%20%20%20%20group_by(lambda%20x%3A%20x%20%25%202%20%3D%3D%200%2C%20%5B1%2C%202%2C%203%2C%204%5D)%20%3D%3D%20%7BTrue%3A%20%5B2%2C%204%5D%2C%20False%3A%20%5B1%2C%203%5D%7D%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A