Search code examples
pythonlistloopsdictionaryconcatenation

Create new dictionary with values as lists and non-empty keys


How can I concat values to empty keys.

my_array = 
[('Schedule: ', '231xxx'),
 ('Name(s): ', 'K, KEN '),
 (' ', 'K, CHRISTINA '),
 ('Address: ', '5xx 4TH LN ANYTOWN CO 81xxx-'),
 ('Description: ', 'BEG PT FT N OF COR OF SEC TH N 85 DEG 11 MIN'),
 ('  ', 'W 100.00 FT TH N'),
 ('  ', 'S 45 DEG 08 MIN E '),
 ('  ', '194.00 FT TO ')
]

Desired result would be:

dict { ('Schedule: ', '231xxx'),
 ('Name(s): ', 'K, KEN ',  'K, CHRISTINA '),
 ('Address: ', '5xx 4TH LN ANYTOWN CO 81xxx-'),
 ('Description: ', 'BEG PT FT N OF COR OF SEC TH N 85 DEG 11 MIN' W 100.00 FT TH N' S 45 DEG 08 MIN E 194.00 FT TO ')}

Solution

  • I'm not sure if I've understood you right. This script will create new dictionary with values as lists and non-empty keys:

    array = [('Schedule: ', '231xxx'),
     ('Name(s): ', 'K, KEN '),
     (' ', 'K, CHRISTINA '),
     ('Address: ', '5xx 4TH LN ANYTOWN CO 81xxx-'),
     ('Description: ', 'BEG PT FT N OF COR OF SEC TH N 85 DEG 11 MIN'),
     ('  ', 'W 100.00 FT TH N'),
     ('  ', 'S 45 DEG 08 MIN E '),
     ('  ', '194.00 FT TO ')
    ]
    
    out = {}
    last_key = ''
    for k, v in array:
        if k.strip():
            last_key = k
        out.setdefault(last_key, []).append(v)
    
    
    from pprint import pprint
    pprint(out)
    

    Prints:

    {'Address:': ['5xx 4TH LN ANYTOWN CO 81xxx-'],
     'Description:': ['BEG PT FT N OF COR OF SEC TH N 85 DEG 11 MIN',
                      'W 100.00 FT TH N',
                      'S 45 DEG 08 MIN E ',
                      '194.00 FT TO '],
     'Name(s):': ['K, KEN ', 'K, CHRISTINA '],
     'Schedule:': ['231xxx']}