Как напечатать выражение генератора, не работающее со словарем - PullRequest
0 голосов
/ 04 августа 2020

код ниже. Мне нужно объединить словарь с методом yield

def test_(c, d):
        if isinstance(c, dict):
            if isinstance(d, dict):
                for key in d:
                    if key in c:
                        c[key] = test_(c[key], d[key])
                        yield(c[key],test_(c[key], d[key]))
            else:
                yield (key, d[key])
        elif key in c:
            yield (key, c[key])
        else:
            yield (key, d[key])
c = {'1': {'index': '1', 'sc':'4', 'st': '3'}, '2': {'index': '2', 'sc': '5', 'st': '5'}}
d = {'1': {'diff': 1}, '2': {'diff': 0}}

print (dict(test_(c,d)))

Ожидается

{'1': {'index': '1', 'sc': '4', 'st': '3', 'diff': 1},
 '2': {'index': '2', 'sc': '5', 'st': '5', 'diff': 0}}

My out

{<generator object test_ at 0x0000025FA26EAAC8>: <generator object test_ at 0x0000025FA26EA8C8>, <generator object test_ at 0x0000025FA26EA748>: <generator object test_ at 0x0000025FA26EAA48>}

1 Ответ

0 голосов
/ 04 августа 2020

Пусть генератор сделает свою работу:

for result in test_(c,d):
    print(dict(result))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...