简体   繁体   English

如何在具有条件的字典中添加新的键值对:值?

[英]How can I add a new pair key: value in a dictionary that has a condition?

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').键是协议编号('2019.491429'、'2020.714034'、'2015.695102' 等),而值是具有 2 个键('classe' 和 '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".我想为“dias_vista”的值等于或大于 10 的键创建一对“prorrogado”:“sim”,为其他键创建“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" .但它返回了"TypeError: 'dict' object is not callable" How can I solve it?我该如何解决?

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 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.对于多个键或另一个字典,首选使用update

You should update value and not info_processos :您应该更新value而不是info_processos

for key, value in info_processos.items():
    if value["dias_vista"] >= 10:
        value.update({"prorrogado": "Sim"})
    else:
        value.update({"prorrogado": "Não"})

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"})

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM