Это один из способов использования модуля csv
и пары словарных понятий:
import csv
from io import StringIO
mystr = StringIO("""id, word, super_id
1 , cat, 2
2 , bird, Nan
3 , dog, 1
4, fox , 1""")
# replace mystr with open('file.csv', 'r')
with mystr as fin:
reader = csv.reader(fin, skipinitialspace=True)
next(reader) # ignore header row, or use headers = next(reader) to extract
fin_d = {int(ide): word for ide, word, super_id in reader}
d = {1: [2, 3, 4], 3: [1]}
# map keys and values of d using fin_d
res = {fin_d[k]: list(map(fin_d.get, v)) for k, v in d.items()}
print(res)
{'cat': ['bird', 'dog', 'fox '], 'dog': ['cat']}