Вывод ключей и значений dict of dicts в список в виде строк x раз, в зависимости от значения int - PullRequest
0 голосов
/ 25 сентября 2018

Я вывожу ключи и значения dict of dicts в список для целей оценки.

Пример словаря выглядит следующим образом:

gold_network = {'Anakin': {'All Jedi': {'fear': 1},
                        'Jedi': {'fear': 4},
                        'Mace': {'anticipation': 1, 'fear': 1},
                        'Obi-Wan': {'joy': 2, 'surprise': 2},
                        'Qui-Gon': {'fear': 2,
                                    'joy': 1,
                                    'sadness': 4,
                                    'surprise': 3,
                                    'trust': 5},
                        'The Council': {'anticipation': 1, 'fear': 1},
                        'Yoda': {'anticipation': 1, 'surprise': 1},
                        'young boy': {'sadness': 3, 'trust': 1}},
             'Jedi': {'Anakin': {'joy': 2}},
             'Obi-Wan': {'Anakin': {'joy': 2, 'trust': 2}},
             'Qui-Gon': {'Anakin': {'anger': 2, 'joy': 2, 'trust': 1}},
             'Yoda': {'Anakin': {'joy': 3}},
             'young boy': {'Anakin': {'joy': 2, 'trust': 3}}}

Мой код для этого выглядитнапример:

gold_list_complete = list('{}-{}-{}'.format(k, k1, k2) for k, v in\
                          gold_network.items() for k1,v1 in v.items()\
                          for k2 in v1.keys())

Желаемый вывод выглядит нормально, например: [Anakin-All Jedi-fear,...]

Но я хотел бы иметь возможность выводить этот формат столько раз, сколько последний int -значение последнего диктанта.

Например, для отношения Anakin-Jedi-fear, где int - это 4: [Anakin-Jedi-fear, Anakin-Jedi-fear, Anakin-Jedi-fear, Anakin-Jedi-fear, ...#other relations] будет желаемым выводом в список этого отношения.

Я попытался умножить всю строку кода, но выдает сообщение об ошибке, что значение не определено.

Есть идеи о том, что добавить в код, чтобы вывести отношение как его последнее int значение?

Заранее спасибо!

1 Ответ

0 голосов
/ 25 сентября 2018

Ну, вместо for k2 in v1.keys() вы могли бы сделать for k2,v2 in v2.items() и повторить это для v2 раз.

list('{}-{}-{}'.format(k, k1, k2)
     for k, v in gold_network.items()
     for k1,v1 in v.items()
     for k2,v2 in v1.items()
     for _ in range(v2))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...