@Anonymous
Yes! That would simply be a modification of the dynamos we've been throwing around so far. If you'd like to give it a try on your own, I can answer questions.
@Everyone
I'm currently working on a Revit addin to allow anyone to easily combine schedules from different categories.
If ya'll would like to help me test it out that would be greatly appreciated. If so, just stay tuned, I'll most likely post about it on this thread.
@Anonymous Sure! First off... You've gotten yourself into a bit of a pickle because A. Dictionaries can be a bit tricky to use, so I just avoid them and stick to lists & B. just knowing that you're using dictionaries doesn't clear up all the issues because the dictionaries that Dynamo uses (through the blocks... outside of the Python node) are different from the standard dictionaries used within Python.
Okay, this'll be a bit of a roller coaster, so hold on tight!
1. Dynamo Error ('iteration over non-sequence of type Dictionary')
The following error is indicating that you can't "Iterate" over a Dictionary :

And it's pointing to line 11 of the code.

And this is a perfect example of why I don't like dictionaries. For one, they can't be looped over because they have no intrinsic 'order'... there's no 'first' or 'last' item... so a loop can't iterate over a dictionary. A dictionary is really just a jumble of items we'll call pairs that have no idea how they relate to each other... no intrinsic association... no indexes. Each pair just has a key(string) that's connected with a value(integer, double... etc.) and you can ask the dictionary to get you a particular value in a pair... but ONLY if you already know the key that you're looking for.
So i'd suggest avoiding dictionaries if you can, but we'll make them work for now.
2. Dealing with the mismatch between Level counts for Areas/Rooms
From what I've gathered from your question, your core issue is that there may be rooms for levels 1-4 (for example) but only areas for levels 1-3... and the dynamo would freak out because there isn't a perfect 1-to-1 correspondence between the Room levels & Area levels. Well, one simple solution to this problem is to simply feed one list of dictionary keys into both "Dictionary.ByKeyValues" nodes (preferably from the list with less keys)... that way they should have matching keys.

In this example, we feed the keys for the Area dictionary into the Room ".ByKeyValues" node... so all pairs in the Rooms dictionary that weren't ALSO in the Area dictionary were dropped. Sort of a filter...
3. Finding a way to loop through these dictionaries and do our arithmetic
So, like I mentioned before, dictionary values can only be found if you already know the key you're looking for... so we'll feed in the same unique keys list from the smaller Areas dictionary that we used to filter the Rooms dictionary just above.

Now, I've made the following modifications to your code... Green = additions & Orange/Yellow = changes:

- First change (lines 7-8) I didn't highlight, but I removed the "UnwrapElement()" calls from the input. Leaving them doesn't hurt, but it also doesn't help. There's nothing for it to do so it just does nothing. It can only convert Revit element types from what Dynamo can interpret to what python can interpret... so it does nothing with a dictionary.
- Next, (line 9) I specified the list of unique keys that we KNOW appear in both the Areas dict and the Rooms dict as "levelKeys"... because those are they keys we will be searching for within the two dictionaries.
- Next, (line 13) I modified the loop to loop over the list of keys('levels') instead of the dictionary which it couldn't do anyways.
- (line 15-16) I added variables that would serve as the total calculated areas per level... one for the Rooms and one for the Areas.
- (line 18) I modified the object which the loop iterates over... making the loop iterate over a list of all the know values that correspond with the 'LevelKey' variable within the 'dicrooms' dictionary. As I mentioned earlier about how Dynamo dictionaries are different from Python dictionaries.... this means that they have their own special way of pulling values matching a given key out of them. Those special ways of extracting values are badly documented online, but they are documented here: https://primer.dynamobim.org/09_Dictionaries/9-3_Code-Block-Uses.html
The last image on that page shows a list of methods and properties you can call (methods and properties are essentially anything that requires following the object with a period like "dictionary.Count"). So, that documentation states graphically and very loosely that we should use ".ValueAtKey(key)" to get the values in the dictionary that are found on a specific level.
- (line 19) Has two modifications... one to finally unwrap the Revit element and convert it from Dynamo form to Python room. This time it WILL have an effect because it's the actual room object itself rather than the dictionary containing the room objects. The second change is from ".Double()" to ".AsDouble()" as the Revit Parameter Object requires you to call it's '.AsDouble()' method to return a floating point value. Here are the docs for it: https://www.revitapidocs.com/2018.2/c0343d88-ea6f-f718-2828-7970c15e4a9e.htm
- (lines 20-24) Simply a repeat of the above few lines of code but running over the Areas instead of the rooms and adding each one's total to the running totals in lines 15-16.
- (lines 26-27) Finally find the difference between the total Room area and the total Area area for this specific floor and add the result to a running list of floor area differences at line 11.
4. Interpreting the Results
Now, if you were to run this dynamo, all you would see out of your Python Script node is a list of numbers. I'm guessing you also want to see what levels those numbers correspond to as well, so we can simply add another node after the python script that pairs each item in the list with each LevelKey that we sent into the Python Node like so:

And now we get a list of area differences per floor that we can easily interpret:

The modified dynamo is attached to this reply, and if you have any questions, feel free to ask.