import sys
input_file = sys.stdin
# read list of properties
L = [dict(map(str.strip, line.partition('=')[::2])
for line in section.splitlines() if line.strip())
for section in input_file.read().split(';')]
print L
# find all names
names = reduce(lambda x, y: x | y, (d.viewkeys() for d in L))
# merge all dictionaries and set missing names to '-'
dd = dict((name, [d.get(name, '-') for d in L]) for name in names)
print dd
aW1wb3J0IHN5cwogCmlucHV0X2ZpbGUgPSBzeXMuc3RkaW4KCiMgcmVhZCBsaXN0IG9mIHByb3BlcnRpZXMKTCA9IFtkaWN0KG1hcChzdHIuc3RyaXAsIGxpbmUucGFydGl0aW9uKCc9JylbOjoyXSkgCiAgICAgICAgICBmb3IgbGluZSBpbiBzZWN0aW9uLnNwbGl0bGluZXMoKSBpZiBsaW5lLnN0cmlwKCkpCiAgICAgZm9yIHNlY3Rpb24gaW4gaW5wdXRfZmlsZS5yZWFkKCkuc3BsaXQoJzsnKV0KcHJpbnQgTAogCiMgZmluZCBhbGwgbmFtZXMKbmFtZXMgPSByZWR1Y2UobGFtYmRhIHgsIHk6IHggfCB5LCAoZC52aWV3a2V5cygpIGZvciBkIGluIEwpKQoKIyBtZXJnZSBhbGwgZGljdGlvbmFyaWVzIGFuZCBzZXQgbWlzc2luZyBuYW1lcyB0byAnLScKZGQgPSBkaWN0KChuYW1lLCBbZC5nZXQobmFtZSwgJy0nKSBmb3IgZCBpbiBMXSkgZm9yIG5hbWUgaW4gbmFtZXMpCnByaW50IGRk
[{'Orange': '2', 'Pear': '1', 'Apple': '1'}, {'Orange': '3', 'Pear': '1'}, {'Orange': '1', 'Pear': '1', 'Apple': '1'}]
{'Orange': ['2', '3', '1'], 'Pear': ['1', '1', '1'], 'Apple': ['1', '-', '1']}