Python 如何获取字典中的键开始使用

Python 如何获取字典中的键开始使用,python,dictionary,Python,Dictionary,我有下面的字典 my = { "1": { "flag": 1, "Col1": "Val1", "Col2": "Val2", "output": "Out1", "id": 33, "Out1": "Cost" },

我有下面的字典

my = {
  "1": {
    "flag": 1,
    "Col1": "Val1",
    "Col2": "Val2",
    "output": "Out1",
    "id": 33,
    "Out1": "Cost"
  },
  "2": {
    "flag": 1,
    "Col1": "Val1",
    "Col2": "Val2",
    "output": "Out1",
    "id": 34,
    "Out1": "Rev"
  },
  "3": {
    "flag": 0,
    "Col1": "Val1",
    "Col2": "Val2",
    "output": "Out1",
    "Out1": "Rev"
  },
  "4": {
    "flag": 0,
    "Col1": "Val1",
    "Col2": "Val2",
    "output": "Out1",
    "Out1": "Cost"
  }
}
我想

  • 使用Col和output列提取键STARTSTS
  • 检查标志是否为1
我已经写了下面的代码,但似乎没有给出预期的结果

{ k: {v: {i:x for i, x in v.items() if i.startswith('Col'),v['output'] if flag=1}.values()} for k,v in my.items()}
预期结果

{
  "1": {
    "Col1": "Val1",
    "Col2": "Val2",
    "output": "Out1"
  },
  "2": {
    "Col1": "Val1",
    "Col2": "Val2",
    "output": "Out1"
  }
}
试试这个

{k : {kk : vv for kk, vv in v.items() if kk.startswith('Col') or kk == 'output'} for k,v in my.items() if v['flag']}

试试这个

{k : {kk : vv for kk, vv in v.items() if kk.startswith('Col') or kk == 'output'} for k,v in my.items() if v['flag']}

或者,如果您喜欢使用正则表达式,请考虑使用<代码> Re.Matt(StaskStand,IntupScript字符串)< /C>。这将匹配开头的字符串

import re

result = {k: {v: my[k][v] for v in my[k] if re.match('Col', v) or re.match('output', v)} for k in my if
      my[k]['flag']}

    
结果

或者,如果您喜欢使用正则表达式,请考虑使用<代码> Re.Matt(StaskStand,IntupScript字符串)< /C>。这将匹配开头的字符串

import re

result = {k: {v: my[k][v] for v in my[k] if re.match('Col', v) or re.match('output', v)} for k in my if
      my[k]['flag']}

    
结果

{
 "1": {
  "Col1": "Val1",
  "Col2": "Val2",
  "output": "Out1"
 },
 "2": {
  "Col1": "Val1",
  "Col2": "Val2",
  "output": "Out1"
 }
}