Вы получаете ошибку из-за dict(dict1.values())
. Вы преобразуете dict()
в dict_values([{'test1': ['pass', 'pass']}, {'test2': ['fail', 'pass']},...])
, который не является допустимым типом для преобразования в словарь, поскольку внутренние словари имеют длину 1 вместо 2, как предполагает ошибка. Вы можете проверить это с помощью [len(x) for x in dict1.values()]
, который вернет [1, 1, 1, 1, 1, 1]
.
Чтобы получить желаемый результат, вы можете использовать это словарное понимание :
>>> {key: value for inner_dict in dict1.values() for key, value in inner_dict.items()}
{'test1': ['pass', 'pass'], 'test2': ['fail', 'pass'], 'test3': ['fail', 'fail'], 'test4': [], 'test5': ['pass'], 'test6': ['pass', 'pass']}
, которое сначала будет проходить по values()
из dict1
(так как нам не нужен внешний ключ). Затем он будет повторять items()
внутреннего dict inner_dict
и назначать пары значений ключа key: value
.
Выше приведено то же, что и следующий вложенный l oop подход:
result = {}
for inner_dict in dict1.values():
for key, value in inner_dict.items():
result[key] = value
print(result)
# {'test1': ['pass', 'pass'], 'test2': ['fail', 'pass'], 'test3': ['fail', 'fail'], 'test4': [], 'test5': ['pass'], 'test6': ['pass', 'pass']}
Что может быть проще для чтения, если вы не знакомы с пониманием словарей ,