Oii Thiago, como você está?
O erro TypeError: 'dict_values' object is not subscriptable
ocorre quando tentamos acessar um objeto dict_values
em um índice específico, porém, como não se trata de uma lista e sim de um dicionário este erro é gerado. Para resolver este problema para o cenário que você apresentou, podemos capturar o valor “mes-ano” acessando a chave mes_ano_referencia
, como mostro abaixo:
if mesAno in item["mes_ano_referencia"]:
Indo um pouco além, também será necessário adicionar uma verificação que informa se há registros ou não e caso não haja, imprimimos a mensagem: “Mês-ano não cadastrado!”, pois, da forma atual como está o seu código, essa mensagem pode ser impressa diversas vezes mesmo que haja registros.
Deixo abaixo o código completo com as modificações citadas.
Código completo
listaRegistros = [{
"mes_ano_referencia" : "11-2022",
"total_habitantes" : 1000000,
"Total_obitos": 500000
},
{
"mes_ano_referencia": "10-2021",
"total_habitantes": 1500000,
"Total_obitos": 600000
},
{
"mes_ano_referencia": "10-2021",
"total_habitantes": 1400000,
"Total_obitos": 400000
},
{
"mes_ano_referencia": "11-2022",
"total_habitantes": 400000,
"Total_obitos": 100000
},
{
"mes_ano_referencia": "11-2022",
"total_habitantes": 2500000,
"Total_obitos": 6400000
},
{
"mes_ano_referencia": "11-2022",
"total_habitantes": 4500000,
"Total_obitos": 100000
}
]
def pesquisarMes(listaRegistros):
mesAno = input("Digite o mês-ano desejado.....:")
possui_registros = False
for item in listaRegistros:
if mesAno in item["mes_ano_referencia"]:
print("Mês-ano..............: " , item["mes_ano_referencia"])
print("Total de Habitantes..: " , item["total_habitantes"])
print("Total de óbitos......: " , item["Total_obitos"] , "\n")
possui_registros = True
if not possui_registros:
print("***** Mês-ano não cadastrado! *****")
pesquisarMes(listaRegistros)
Resultado da busca por "11-2022"
:
Digite o mês-ano desejado.....:11-2022
Mês-ano..............: 11-2022
Total de Habitantes..: 1000000
Total de óbitos......: 500000
Mês-ano..............: 11-2022
Total de Habitantes..: 400000
Total de óbitos......: 100000
Mês-ano..............: 11-2022
Total de Habitantes..: 2500000
Total de óbitos......: 6400000
Mês-ano..............: 11-2022
Total de Habitantes..: 4500000
Total de óbitos......: 100000
Resultado da busca por "12-2022"
:
Digite o mês-ano desejado.....:12-2022
***** Mês-ano não cadastrado! *****
Espero ter ajudado. Fico à disposição.
Abraços e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!