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