Unfortunately, if the keys in your list can be altered at any time, you could never write code to sum groups together that would work forever.
As soon as an additional key was added, changed, or one completely removed, your code would fail and need to be re-written.
I get the feeling that the data you are receiving is not produced by yourself, but if you can request it is supplied in a usable format, you'll be able to write the code you need. If however you cannot change this, then you'll have to do some string manipulation to place the data items and values into groups you can use - but you will never know what that data really is - they'll just be strings.
As a hack, you could get each item Financial Info object (the key/value pairs), and when passing them through an 'each' function split the key on the underscore and check for your 'curr' and 'prev' values (or pair up the 'bldgs', 'land' etc.), then sum them accordingly. However, I noticed that there is also an 'expl' in one of the keys - this is why any changes may break what you do.
The only way to do this correctly would be to generate a proper JSON object that can tell you what the items are and what values they have.
This is the purpose of structured data in models - a string and a value doesn't give you enough to work on.
So a rough example could be:
{
'Executive Summary': "This is a test. Please ignore.",
'Financial Info': {
alt: { curr: "1000", prev: "500"},
auto: {curr: "2100"},
bldgs: {curr: "12000", prev: "5000"},
land: {curr: "30000", prev: "700"},
machine: {curr: "25000", prev: "1000"},
other: {curr: "2659", prev: "6000", exp: { curr: "900", expl: "9800", prev: "600"}},
startup: {curr: "600", prev: "550"},
},
ID: 12208
}
Now you can loop through looking for all items with a 'curr' or 'prev' value, and sum them.
Or you can sum the 'curr' and 'prev' for each item in the list.
It won't matter what the items names are in the future - you read the name from the JSON object and display its summed values.
So, loop through each item outputting its name and summed values:
Land : "1500" (land.curr, land.prev)
Machine : "26,000" (machine.curr, machine.prev) etc.
Loop through all adding the 'curr', 'prev', and 'expl' as required:
Total Curr: 74,259 (alt.curr, auto.curr, bldgs.curr, land.curr, machine.curr, other.curr, other.exp.curr, and startup.curr)
Total Prev: 14,350 (alt.prev, bldgs.prev, land.prev, machine.prev, other.prev, other.exp.prev, startup.prev)
Total Expl: 9800 (other.exp.expl)
This is only a quick explanation, but you could also change the pure 'objects' above to arrays of 'Items' where each one has a 'Name' and an array of 'Data', each 'Data' item having a 'Type' and a 'Value'.