I have the following dictionary:
info_processos = {
'2019.491429': {"classe": "apelação", "dias_vista": 11},
'2020.714034': {"classe": "habeas corpus", "dias_vista": 8},
'2015.695102': {"classe": "agravo de instrumento", "dias_vista": 17},
'2012.628045': {"classe": "apelação", "dias_vista": 32},
'2017.462447': {"classe": "recurso em sentido estrito", "dias_vista": 9},
'2018.518281': {"classe": "apelação", "dias_vista": 4},
}
The keys are the protocols numbers ('2019.491429', '2020.714034', '2015.695102', etc.) while the values are a subdictionary which has 2 keys ('classe' and 'dias_vista').
I want to create a new pair "prorrogado": "sim" for the keys which have the value from "dias_vista" equal or above 10 and for the others "prorrogado": "não".
I have tried using this loop method:
for key, value in info_processos.items():
if info_processos(value["dias_vista"] >= 10):
info_processos.update({key: {"prorrogado": "Sim"}})
info_processos.update({key: {"prorrogado": "Não"}})
But it returned "TypeError: 'dict' object is not callable"
.
How can I solve it?
CodePudding user response:
Just do:
import pprint
info_processos = {
'2019.491429': {"classe": "apelação", "dias_vista": 11},
'2020.714034': {"classe": "habeas corpus", "dias_vista": 8},
'2015.695102': {"classe": "agravo de instrumento", "dias_vista": 17},
'2012.628045': {"classe": "apelação", "dias_vista": 32},
'2017.462447': {"classe": "recurso em sentido estrito", "dias_vista": 9},
'2018.518281': {"classe": "apelação", "dias_vista": 4},
}
for key, inner in info_processos.items():
inner["prorrogado"] = "Sim" if inner["dias_vista"] >= 10 else "Não"
pprint.pprint(info_processos)
Output
{'2012.628045': {'classe': 'apelação', 'dias_vista': 32, 'prorrogado': 'Sim'},
'2015.695102': {'classe': 'agravo de instrumento',
'dias_vista': 17,
'prorrogado': 'Sim'},
'2017.462447': {'classe': 'recurso em sentido estrito',
'dias_vista': 9,
'prorrogado': 'Não'},
'2018.518281': {'classe': 'apelação', 'dias_vista': 4, 'prorrogado': 'Não'},
'2019.491429': {'classe': 'apelação', 'dias_vista': 11, 'prorrogado': 'Sim'},
'2020.714034': {'classe': 'habeas corpus',
'dias_vista': 8,
'prorrogado': 'Não'}}
The use of update
is preferred for multiple keys or another dictionary.
CodePudding user response:
You should update value
and not info_processos
:
for key, value in info_processos.items():
if value["dias_vista"] >= 10:
value.update({"prorrogado": "Sim"})
else:
value.update({"prorrogado": "Não"})
CodePudding user response:
I guess this is what you are looking for:
for key, value in info_processos.items():
if value["dias_vista"] >= 10:
info_processos[key].update({"prorrogado": "Sim"})
else:
info_processos[key].update({"prorrogado": "Não"})