python-benedict/tests/stackoverflow/test_question_60276839.py

64 lines
2.7 KiB
Python

import unittest
class stackoverflow_question_60276839_test_case(unittest.TestCase):
def test_stackoverflow_question_60276839(self):
"""
https://stackoverflow.com/questions/60276839/merge-list-of-nested-dictionaries
"""
from benedict import benedict as bdict
data_input = [
{"9940542": {"Invalid Adjust(Platform Fee)": "-1.00"}},
{"9940542": {"Invalid Adjust(Media Fee)": "-2.00"}},
{"10315065": {"Invalid Adjust(Platform Fee)": "-1.00"}},
{"10315065": {"Invalid Adjust(Media Fee)": "-3.00"}},
{"11211744": {"Invalid Adjust(Platform Fee)": "-290.00"}},
{"11211744": {"Invalid Adjust(Media Fee)": "-3403.00"}},
{"11309685": {"Invalid Adjust(Platform Fee)": "-57.00"}},
{"11309685": {"Invalid Adjust(Media Fee)": "-670.00"}},
{"12103490": {"Media Fee": "709472.00"}},
{"12103490": {"Platform Fee": "22703.00"}},
{"12103490": {"Invalid Adjust(Platform Fee)": "-30.00"}},
{"12103490": {"TrueView Budget Adjust (Platofrm Fee)": "-301.00"}},
{"12103490": {"Invalid Adjust(Media Fee)": "-348.00"}},
{"12103490": {"TrueView Budget Adjust (Media Fee)": "-9376.00"}},
{"12160150": {"Media Fee": "549173.00"}},
{"12160150": {"Platform Fee": "17573.00"}},
]
data_output = bdict()
data_output.merge(*data_input)
# print(data_output.dump())
expected_data_output = {
"10315065": {
"Invalid Adjust(Media Fee)": "-3.00",
"Invalid Adjust(Platform Fee)": "-1.00",
},
"11211744": {
"Invalid Adjust(Media Fee)": "-3403.00",
"Invalid Adjust(Platform Fee)": "-290.00",
},
"11309685": {
"Invalid Adjust(Media Fee)": "-670.00",
"Invalid Adjust(Platform Fee)": "-57.00",
},
"12103490": {
"Invalid Adjust(Media Fee)": "-348.00",
"Invalid Adjust(Platform Fee)": "-30.00",
"Media Fee": "709472.00",
"Platform Fee": "22703.00",
"TrueView Budget Adjust (Media Fee)": "-9376.00",
"TrueView Budget Adjust (Platofrm Fee)": "-301.00",
},
"12160150": {
"Media Fee": "549173.00",
"Platform Fee": "17573.00",
},
"9940542": {
"Invalid Adjust(Media Fee)": "-2.00",
"Invalid Adjust(Platform Fee)": "-1.00",
},
}
self.assertEqual(data_output, expected_data_output)