unmarshaler = { "Logical_drives": lambda x: { "Free Space": [ ([t[0].text for t in type], zip([e[0].text for e in free] ,[f[0].text for f in total]) ) for free, total, type in [ ([child.findall('Free_bytes') for child in x.findall('Drive')], [child.findall('Total_bytes') for child in x.findall('Drive')], [child.findall('Drive_type') for child in x.findall('Drive')]) ] ]} } this is returned: {'Free Space': [(['2', '3', '3', '5', '5', '4'], [('0', '0'), ('13790306304', '34685972480'), ('3918094336', '5360582656'), ('0', '577288192'), ('0', '0'), ('2255486976', '63412633600')])]} but what I am trying to get out are only the tuples ('13790306304', '34685972480') and ('3918094336', '5360582656') the identifier being the '3''s of the first list in the outer tuple