重写iteritems循环中的值

2024-04-24 20:06:48 发布

您现在位置: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 k != 'foreground':
            for k2, v2 in d['boxes']['players_home'][k].iteritems():
                if k2 != 'fouls':
                    results['players_home'][k] = {}
                    results['players_home'][k][k2] = MyAgonism.ssocr(v2['coord'], bg, myfg, v2['type'])

    return results

在最后的iteritems中,我只得到了name键的正确值。score键不出现。它看起来像是name重写了我的results['players_home']字典中的score

输出:... "player4": {"name": 9}, "player5": {"name": 24} ...

我想要... "player4": {"name": 9, "score": value}, "player5": {"name": 24, "score": value} ...

我做错什么了?下面是完整的代码,以防万一:Full Code


Tags: 函数nameinhomeif字典resultsscore
1条回答
网友
1楼 · 发布于 2024-04-24 20:06:48

这可能是/a问题:

            if k2 != 'fouls':
                results['players_home'][k] = {}

在循环中,每次k2不是'fouls',都创建一个新的空dict并将其存储在results['players_home']。这意味着以前存储在那里的任何条目都不再可访问。你知道吗

相关问题 更多 >