如何通过检查dict中映射的键来获取dictionary中的值

2024-10-01 04:52:29 发布

您现在位置:Python中文网/ 问答频道 /正文

字典在下面

my = {
  "1": {
    "exclude": 'A,B',
    "column": "value",
    "output": "Out1",
    "Out1": "Cost",
    "Out2": "Rev"
  },
  "2": {
    "exclude": 'None',
    "column": "value",
    "output": "Out2",
    "Out1": "Cost",
    "Out2": "Rev"
  }
}
  • 我需要检查列键值(如果更低(我的[列])==更低(值)
  • 我有exclude_list = ['A','B','C']
  • 我需要使用exclude键,如果exclude是'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:
     
   

Tags: noneoutput字典valuemyrevcolumnlower
1条回答
网友
1楼 · 发布于 2024-10-01 04:52:29

您可以迭代键1,2。。使用for e in my:计算N,然后使用set()差计算排除,如下所示

提取像这样的东西

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

接下来,您可以根据output的值将out1out2的值取为

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'] }}

相关问题 更多 >