q
1 Dicionários são conjuntos de pares chave:valor. 1 Não existem chaves duplicadas.
1 As chaves precisam ser de tipos imutáveis, como strings e números.
1 São representados por listas de pares chave:valor separados por vírgula e entre abre ‘{‘ e fecha chaves ‘}’.
Quando atribuímos uma tupla a variáveis, ocorre o desempacota- mento, mas o número de variáveis precisa ser igual ao número de elementos da tupla.
Ca pí tu lo 2 - O ut ro s t ip os d e d ad os , e st ru tu ra s d e c on tr ol e e f un çõ es
Os dicionários são um dos tipos nativos de Python, conhecido como um tipo de dado de mapeamento. Em outras linguagens existem estruturas parecidas, arrays associativos, memória associativa ou hashmaps.
São compostos por pares de chave e valor, e inicializados utilizando chaves (“{}”), par ou pares de chave valor, compostos pela chave, dois pontos (“:”) e o valor. Os pares devem ser separados por vírgulas. As chaves precisam ser de algum tipo imutável, como strings ou números. As chaves podem ser tuplas, desde que as tuplas não contenham dados mutáveis, como listas.
src/modelo04.txt
>>> estados = {"AC": "Acre", "AL": "Alagoas", "AP": "Amapá", ... "AM": "Amazonas", "BA": "Bahia", "CE": "Ceará", ... "DF": "Distrito Federal", "ES": "Espírito Santo", ... "GO": "Goiás", "MA": "Maranhão", "MT": "Mato Grosso", ... "MS": "Mato Grosso do Sul", "MG": "Minas Gerais", ... "PA": "Pará", "PB": "Paraíba", "PR": "Paraná",
... "PE": "Pernambuco", "PI": "Piauí", "RJ": "Rio de Janeiro", ... "RN": "Rio Grande do Norte", "RS": "Rio Grande do Sul", ... "RO": "Rondônia", "RR": "Roraima", "SC": "Santa Catarina", ... "SP": "São Paulo", "SE": "Sergipe", "TO": "Tocantins"} >>> siglas = sorted(estados.keys())
>>> siglas
['AC', 'AL', 'AM', 'AP', 'BA', 'CE', 'DF', 'ES', 'GO', 'MA', 'MG', 'MS', 'MT', 'PA', 'PB', 'PE', 'PI', 'PR', 'RJ', 'RN', 'RO', 'RR', 'RS', 'SC', 'SE', 'SP', 'TO'] >>> estados['AM'] 'Amazonas' >>> estados['DF'] 'Distrito Federal' >>> Continua ...
q
1 A instrução “del” remove um par (chave:valor) do dicionário.
1 Atribuir valor a uma chave cria um elemento. Se a chave já existir, sobrescreve o valor anterior.
1 Acessar uma chave inexistente gera um erro.
1 Para verificar se uma chave existe, usar a instrução “in”. 1 Usar o construtor “dict” cria um dicionário.
1 Compreensão de dicionários cria novos dicionários.
Esse dicionário contém as siglas e os nomes dos estados brasileiros, a sigla é a chave e o nome é o valor de cada item do dicionário. Podemos obter uma lista das chaves usando o método keys e ordenamos a lista com a função sorted. Para obter um valor, nesse caso o nome de um estado, basta usar a chave como índice.
P yt ho n e D ja ng o F un da m en to s src/modelo04.txt (continuação). >>> estados["ZZ"] = "zio zande" >>> "ZZ" in estados
True
>>> estados["ZZ"] = "Zzio Zzande" >>> estados["ZZ"] 'Zzio Zzande' >>> del estados["ZZ"] >>> "ZZ" in estados False >>> estados["ZZ"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'ZZ'
>>> relacao = dict(a=1, b=2, c=3, d=4) >>> relacao
{'a': 1, 'c': 3, 'b': 2, 'd': 4}
>>> {item[0].upper(): item[1] for item in relacao.items()} {'A': 1, 'C': 3, 'B': 2, 'D': 4}
>>>
Para criar um novo elemento em um dicionário existente, basta atribuirmos um valor a uma chave inexistente. O operador in é usado para verificar a existência de uma chave no dicio- nário. Atribuição de valor a uma chave existente sobrescreve o valor. O comando del remove um item do dicionário. Acessar uma chave inexistente causa uma exceção. Outro modo de criar um dicionário é utilizando o construtor dict. A compreensão de dicionários gera um novo dicionário, como vemos na última linha do exemplo.
Conjunto
q
1 São coleções sem ordem definida. 1 Não possui elementos repetidos.
1 Suportam as operações matemáticas de união, interseção, diferença e diferença simétrica.
1 Usam-se chaves ou a função set() para criar um conjunto. 1 Para criar um conjunto vazio, é imperativo o uso da função set(). 1 Abre e fecha chaves { } cria um dicionário vazio.
O conjunto é um tipo de dados que faz parte de uma categoria chamada coleções. O con- junto é uma coleção de elementos únicos sem ordem definida. Suporta as operações mate- máticas tradicionais de conjuntos: união, interseção, diferença e diferença simétrica. Criamos conjuntos usando abre e fecha chaves (“{a,b,c}”), e entre as chaves os elementos separados por vírgula. Para criar um conjunto vazio, é necessário usar a função set (abre e fecha chaves sem elementos cria um dicionário vazio).
Ca pí tu lo 2 - O ut ro s t ip os d e d ad os , e st ru tu ra s d e c on tr ol e e f un çõ es src/modelo05.txt >>> reais = {1.0, 2.0, 3.0, 3.5, 4.0, 4.5, 5.0, 7.5} >>> inteiros = set([1, 2, 3, 4, 5, 6]) >>> 3 in inteiros True >>> 3 in reais True >>> 3.5 in inteiros False >>> 3.5 in reais True
>>> inteiros - reais # Inteiros que não estão nos reais. {6}
>>> reais - inteiros # Reais que não estão nos inteiros. {3.5, 4.5, 7.5}
>>> reais | inteiros # Números que estão em um ou outro. {1.0, 2.0, 3.0, 3.5, 4.5, 5.0, 4.0, 7.5, 6}
>>> reais & inteiros # Números que estão nos dois conjuntos. {1, 2, 3, 4, 5}
>>> reais ^ inteiros # Números em um ou outro, mas não nos dois. {3.5, 6, 4.5, 7.5}
>>>
Nesse exemplo, são criados dois conjuntos, reais e inteiros. O operador in serve para verificar a existência de um elemento no conjunto. A comparação segue o comportamento das comparações da linguagem Python. Assim, o número três (“3”) do tipo inteiro é igual ao número três (“3.0”) do tipo real, afinal três é três. O operador menos (“-”) fornece um novo conjunto que é a diferença entre os conjuntos. O operador pipe (“|”) é o operador de união. O operador “e” comercial (“&”) é o operador de interseção. O operador circunflexo (“^”) é o operador de diferença simétrica. Para saber mais sobre conjuntos, veja a referência da docu- mentação da linguagem [1].
Booleanos
q
1 A linguagem Python tem também um tipo booleano.
1 O tipo booleano possui apenas dois valores, True e False. São equivalentes aos inteiros 0 e 1.
1 As operações tradicionais de comparação resultam em booleanos. < (menor), <= (menor ou igual), > (maior), >= (maior ou igual), == (igual).
O tipo de dados booleano é muito popular em todas as linguagens, definido por George Boole. Esse tipo de dado é usado especialmente em álgebra booliana. Na linguagem Python, esse tipo é representado por dois valores: True e False, que são equivalentes aos inteiros 1 e 0. Operações lógicas, ou de comparação, resultam em booleanos. A função bool avalia o parâ- metro fornecido a ela e retorna True ou False. Essa mesma avaliação é válida para operações lógicas, usadas em comandos condicionais como o if e while, que serão vistos mais à frente.
P yt ho n e D ja ng o F un da m en to s src/modelo06.txt
>>> bool('') # strings vazias são avaliadas como False. False
>>> bool('v') # strings com algum conteúdo são verdadeiras. True
>>> bool('f') # Não importa o conteúdo. True
>>> bool('false') # Basta que o tamanho seja maior que zero. True
>>> bool('False') True
>>> bool(False) # O booleano False, é avaliado como False. False
>>> bool(0) # Zero é False. False
>>> bool(1) # Números diferentes de zero são True. True
>>> bool(5002) True
>>> bool([]) # Listas vazias são False. False
>>> bool([False]) # Não importa o conteúdo. True
>>> bool({}) # Dicionários e tudo mais, funcionam dessa forma. False
>>> bool({'0': False}) # Se tem um elemento, é True. True
>>> bool(set()) # Conjuntos não seriam diferentes. False
>>> bool({False}) True
>>>
Em Python, o comportamento das avaliações de expressões boolianas segue um padrão. Zero (“0”) é considerado falso, um (“1”) é considerado verdadeiro. Assim, numerais, sejam inteiros, float ou outros com valor zero, são falsos. Se forem maiores que zero, são verdadeiros. Os outros tipos, strings, listas, dicionários e conjuntos são considerados falsos se estiverem vazios. Portanto, se o tamanho deles for maior que zero, são considerados verdadeiros.