You could do it fairly succinctly by using a csv.DictWriter
.
import csv
my_dict = {
"2020-09-03": {
"1. open": "128.1900",
"2. high": "129.9500",
"3. low": "123.6500",
"4. close": "124.4500",
"5. volume": "5716750"
},
"2020-09-02": {
"1. open": "123.7200",
"2. high": "123.567",
"3. low": "123.6500",
"4. close": "128.3450",
"5. volume": "6745450"
},
}
filename = 'converted_dict.csv'
fieldkeys = ['1. open', '2. high', '3. low']
fieldnames = [fieldkey.split()[1] for fieldkey in fieldkeys]
fieldmap = dict(zip(fieldnames, fieldkeys))
with open(filename, 'w', newline='') as file:
writer = csv.DictWriter(file, ['date'] + fieldnames)
writer.writeheader() # If desired.
for date, values in my_dict.items():
row = {fieldname: values[fieldmap[fieldname]] for fieldname in fieldnames}
writer.writerow(dict(date=date, **row))
Resulting CSV file's contents:
date,open,high,low
2020-09-03,128.1900,129.9500,123.6500
2020-09-02,123.7200,123.567,123.6500