@@ -310,18 +310,16 @@ def _recursive_extract(data, path, seen_meta, level=0):
310
310
# is at the meta path end
311
311
if level + 1 > len (val ):
312
312
meta_val = seen_meta [key ]
313
- meta_vals [key ].append (meta_val )
314
313
# Extract the value of the key from seen_meta when
315
314
# meta path and record path are on two branches
316
315
elif seen_meta :
317
- meta_val = seen_meta [key ]
318
- meta_vals [key ] += [
319
- # The list case
320
- meta_val [ind ][val [level ]]
321
- if isinstance (meta_val , list )
322
- # The dict case
323
- else meta_val [val [level ]]
324
- ]
316
+ meta_val_obj = seen_meta [key ]
317
+ # Both the list case and the dict case are covered
318
+ meta_val = (
319
+ meta_val_obj [ind ][val [level ]]
320
+ if isinstance (meta_val_obj , list )
321
+ else meta_val_obj [val [level ]]
322
+ )
325
323
# At top level, seen_meta is empty, pull from data
326
324
# directly and raise KeyError if not found
327
325
else :
@@ -336,7 +334,7 @@ def _recursive_extract(data, path, seen_meta, level=0):
336
334
"errors='ignore' as key "
337
335
"{err} is not always present" .format (err = e )
338
336
)
339
- meta_vals [key ].append (meta_val )
337
+ meta_vals [key ].append (meta_val )
340
338
341
339
records .extend (recs )
342
340
0 commit comments