我用python创建了一个迭代多级字典的函数,并执行需要四个参数的第二个函数ssocr
:coord,background,foreground,type(它们是我的值)键)。
这是我的字典,取自json文件。
`
def parse_image(self, d):
bg = d['background']
fg = d['foreground']
results = {}
for k, v in d['boxes'].iteritems():
if 'foreground' in d['boxes']:
myfg = d['boxes']['foreground']
else:
myfg = fg
if k != 'players_home' and k != 'players_opponent':
results[k] = MyAgonism.ssocr(v['coord'], bg, myfg, v['type'])
results['players_home'] = {}
for k, v in d['boxes']['players_home'].iteritems():
if 'foreground' in d['boxes']['players_home']:
myfg = d['boxes']['players_home']['foreground']
else:
myfg = fg
if k != 'background' and 'foreground':
for k2, v2 in d['boxes']['players_home'][k].iteritems():
if k2 != 'fouls':
results['players_home'][k] = MyAgonism.ssocr(v2['coord'], bg, myfg, v2['type'])
return results
我在第二个到最后一个iteritems的前台检查中有一个错误,我的密钥号覆盖了密钥分数
答案 0 :(得分:1)
你的问题在这里:
if k != 'background' and 'foreground':
# do something
哪个不进行您认为正在进行的检查。你有效地尝试了
if (k != "background") and ('foreground'):
# do something
总是评估为True
的(因为非空字符串被视为" truthy")。
只需将该行更改为:
if k not in ('background', 'foreground'):
# do stuff
或者按照你在函数(if k != 'players_home' and k != 'players_opponent':
)中进一步操作的方式进行操作,并且你应该开展业务。