为了账号安全,请及时绑定邮箱和手机立即绑定

如何通过检查字典中映射的键来获取字典中的值

如何通过检查字典中映射的键来获取字典中的值

料青山看我应如是 2023-06-27 18:16:58
词典如下my = {  "1": {    "exclude": 'A,B',    "column": "value",    "output": "Out1",    "Out1": "Cost",    "Out2": "Rev"  },  "2": {    "exclude": 'None',    "column": "value",    "output": "Out2",    "Out1": "Cost",    "Out2": "Rev"  }}我需要检查列键值 (if lower(my[column])) == lower(value)我有exclude_list = ['A','B','C']我需要排除键,如果排除是“A”,请检查exclude_list = ['A','B','C'] 取值B,C。如果排除键是“A,B”,则采用C示例中所示的值。我需要检查output键是否output为键,Out1然后获取值Out1并映射到EndOutput预期出局{'1': {'exclude': ['C'], 'EndOutput': 'Cost'}, '2': {'exclude': ['A', 'B', 'C'], 'EndOutput': 'Rev'}}exclude_list = ['A','B','C']for k,v in my.items():    if v['column'].lower() == 'value'.lower:
查看完整描述

1 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

您可以迭代键 1,2 .. N for e in my:,然后借助set()差异计算排除:


并提取这样的东西


 exc = set(['A','B','C']) - set(my[e]["exclude"].split(",") if len(my[e]["exclude"].split(",")) else [] )

接下来你可以取值out1orout2取决于outputas的值


my[e][my[e]["output"]]

在新字典中插入为


newdict[e] = {'exclude': list(exc) ,'EndOutput':my[e][my[e]["output"]]}

总的来说,这就是您可以迭代的方式


newdict = {}

for e in my:

     if my[e]['column'].lower() == 'value':

             exc = set(['A','B','C']) - set(my[e]["exclude"].split(",") if len(my[e]["exclude"].split(",")) else [] )

             newdict[e] = {'exclude': list(exc) ,'EndOutput':my[e][my[e]["output"]]}

打印 newdict 将产生此输出


'1': {'EndOutput': 'Cost', 'exclude': ['C'] },

'2': {'EndOutput': 'Rev', 'exclude': ['A', 'B', 'C'] }}


查看完整回答
反对 回复 2023-06-27
  • 1 回答
  • 0 关注
  • 95 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信