Programação Python (Intermediário) - Prof. MARCO VAZ

MarcoVaz
108.8K views

Open Source Your Knowledge, Become a Contributor

Technology knowledge has to be shared and made accessible for free. Join the movement.

Create Content
Previous: Dicionários Next: Exercitando

Dicionários em Python

items(), keys() e values()

Os dicionários são iteráveis, isto é, são objetos que podem ter os elementos da sequência percorridos um a um. A função items() retorna uma lista de tuplas com os pares “chave” : valor. A função keys() retorna uma lista apenas com as chaves do dicionário, enquanto que a função values() retorna uma lista apenas com os valores dos itens do dicionário.

In [1]: cesta_frutas = {'maça':60, 'uva':20, 'pera':35, 'abacaxi':25, 'laranja':55}

In [2]: cesta_frutas.items()
Out[2]: dict_items([('maça', 60), ('uva', 20), ('pera', 35), ('abacaxi', 25), ('laranja', 55)])

In [3]: cesta_frutas.keys()
Out[3]: dict_keys(['maça', 'uva', 'pera', 'abacaxi', 'laranja'])

In [4]: cesta_frutas.values()
Out[4]: dict_values([60, 20, 35, 25, 55])

Também podemos percorrer os elementos da sequência através da estrutura for, iterando através de variáveis que recebem a chave e o valor, definidas no corpo do comando.

In [6]:   for fruta, qtd in cesta_frutas.items():
   ...:     print('nome:', fruta, (12 -len(fruta))*' ','qtde:',str(qtd))
   ...:   
   ...:   
nome: maça          qtde: 60
nome: uva           qtde: 20
nome: pera          qtde: 35
nome: abacaxi       qtde: 25
nome: laranja       qtde: 55

Lista de Dicionários

Os dicionários também podem ser armazenados em listas, através dos métodos já conhecidos como atribuição direta à variável, ou ainda, por meio do método append().

In [1]: jeep_basico={'compass':116990,'cherokee':359900,'renegade':89990,'wrangler':272990}

In [2]: chevrolet_basico={'onix':47590,'prisma':49590,'cruze':101190, 'tracker':92950}

In [3]: carros=[jeep_basico]   #atribuição direta

In [4]: carros.append(chevrolet_basico) # Acrescentando um item por append

In [5]: carros
Out[5]: 
[{'compass': 116990,
  'cherokee': 359900,
  'renegade': 89990,
  'wrangler': 272990},
 {'onix': 47590, 'prisma': 49590, 'cruze': 101190, 'tracker': 92950}]

In [6]: for carro in carros:
   ...:     for tipo, preco in carro.items():
   ...:         print(tipo, " :  ", preco)
   ...:         
compass  :   116990
cherokee  :   359900
renegade  :   89990
wrangler  :   272990
onix  :   47590
prisma  :   49590
cruze  :   101190
tracker  :   92950

Associar uma lista de valores a uma chave

Pode-se associar múltiplos valores a uma chave, isso pode ser feito por meio de uma lista de valores.


In [7]: # Preços das várias versões de cada carro

In [8]: jeep_basico={'compass':[116990,120990],'cherokee':[359900,365900],'renegade':[89990, 104990, 109990],'wrangler':[272990, 290990]}

In [9]: chevrolet_basico={'onix':[47590, 49990,59990],'prisma':[49590,58590],'cruze':[101190, 105190], 'tracker':[92950, 95900]}

In [10]: carros=[jeep_basico, chevrolet_basico]

In [11]: for carro in carros:
    ...:     for tipo, preco in carro.items():
    ...:         print('Tipo:',tipo, "Precos:")
    ...:         for x in preco:
    ...:             print(x)
    ...:             
Tipo: compass Precos:
116990
120990
Tipo: cherokee Precos:
359900
365900
Tipo: renegade Precos:
89990
104990
109990
Tipo: wrangler Precos:
272990
290990
Tipo: onix Precos:
47590
49990
59990
Tipo: prisma Precos:
49590
58590
Tipo: cruze Precos:
101190
105190
Tipo: tracker Precos:
92950
95900

Transformando listas em Dicionário

Há várias maneiras de se ralizar a conversão de listas em dicionários. Um dicionário é um elemento que contém itens chave-valor e, por isso, é necessário utilizarmos duas listas para a cconversão em um dicionário (é possível usar apenas uma). Utilizamos duas listas com a mesma quantidade de elementos em um dicionário juntamente com a função zip() do Python. Essa função retorna uma lista contendo tuplas, onde o primeiro valor é o da primeira lista, e o segundo valor da tupla, corresponde a segunda lista. A função zip() faz parte da programação funcional implementada pelo Python. Assim, essa é uma das ferramentas que foram implementadas na linguagem e que trabalham muito bem com o paradigma de orientação a objetos.

In [1]: nomes = ['igor','gabriel', 'matheus']

In [2]: idades = [22, 31, 33]

In [3]: list(zip(nomes, idades)) # Transformando as listas em uma lista de tuplas
Out[3]: [('igor', 22), ('gabriel', 31), ('matheus', 33)]

In [4]: dict(zip(nomes, idades)) # Transformando as listas em um dicionário
Out[4]: {'igor': 22, 'gabriel': 31, 'matheus': 33}
Open Source Your Knowledge: become a Contributor and help others learn. Create New Content