Iteritems是python中的一个词典

时间:2016-04-06 12:12:03

标签: python json python-2.7 dictionary

我用python创建了一个迭代多级字典的函数,并执行需要四个参数的第二个函数ssocr:coord,background,foreground,type(它们是我的值)键)。 这是我的字典,取自json文件。

document 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的前台检查中有一个错误,我的密钥号覆盖了密钥分数

1 个答案:

答案 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':)中进一步操作的方式进行操作,并且你应该开展业务。