Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Desempacotamento de Tuplas - f'' x format

Notei que com f'' não consigo imprimir o ano, mas com oformat é possível e não entendi o motivo. Segue uma demonstração:

Declaração dos dados:

dados = {
    'Crossfox': {'valor': 72000, 'ano': 2005}, 
    'DS5': {'valor': 125000, 'ano': 2015}, 
    'Fusca': {'valor': 150000, 'ano': 1976}, 
    'Jetta': {'valor': 88000, 'ano': 2010}, 
    'Passat': {'valor': 106000, 'ano': 1998}
}

Imprimindo com f'':

for item in dados.items():
    if (item[1]['ano'] >= 2000):
        print(f'{item[0]} no ano {item[1]['ano']}.')

Tive como resultado:

Input In [218]
    print(f'{item[0]} no ano {item[1]['ano']}.')
                                       ^
SyntaxError: f-string: unmatched '['

Por outro lado, imprimindo com o format deu certo:

for car, value in dados.items():
  if(value['ano'] >= 2000):
    print("O carro {} é do ano {}".format(car, value['ano']))

Saída:

O carro Crossfox é do ano 2005
O carro DS5 é do ano 2015
O carro Jetta é do ano 2010
1 resposta
solução!

Boa tarde meu caro. Isso está acontecendo porque você está usando aspas simples tanto para fstring quanto para destacar o "ano":

for item in dados.items():
    if (item[1]['ano'] >= 2000):
        print(f'{item[0]} no ano {item[1]['ano']}.')

Com isso seu código está entendendo que após o colchetes de abertura e antes do "ano" a string termina.

Para usar aspas dentro de aspas você tem que alternar entre aspas simples e duplas. Assim, usando aspas duplas no "ano", funcionaria corretamente:

for item in dados.items():
    if (item[1]['ano'] >= 2000):
        print(f'{item[0]} no ano {item[1]["ano"]}.')

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