首页 > 解决方案 > 如何将嵌套字典写入 CSV 文件?

问题描述

我正在尝试将嵌套字典写入 CSV 文件并遇到问题;该文件没有写入任何内容,或者它出错了。

字典看起来像这样:

finalDict = 'How would you rate the quality of the product?': [{'10942625544': 'High '
                                                                    'quality'},
                                                    {'10942625600': 'Neither '
                                                                    'high nor '
                                                                    'low '
                                                                    'quality'},
                                                    {'10942625675': 'Neither '
                                                                    'high nor '
                                                                    'low '
                                                                    'quality'},
                                                    {'10942625736': 'Very high '
                                                                    'quality'},
                                                    {'10942625788': 'Neither '
                                                                    'high nor '
                                                                    'low '
                                                                    'quality'},
                                                    {'10942625827': 'Neither '
                                                                    'high nor '
                                                                    'low '
                                                                    'quality'},
                                                    {'10942625878': 'Neither '
                                                                    'high nor '
                                                                    'low '
                                                                    'quality'},
                                                    {'10942625932': 'High '
                                                                    'quality'},
                                                    {'10942625977': 'High '
                                                                    'quality'},
                                                    {'10942626027': 'Neither '
                                                                    'high nor '
                                                                    'low '
                                                                    'quality'},
                                                    {'10942626071': 'High '
                                                                    'quality'},
                                                    {'10942626128': 'High '
                                                                    'quality'},
                                                    {'10942626180': 'Very high '
                                                                    'quality'},
                                                    {'10942626227': 'Very high '
                                                                    'quality'},
                                                    {'10942626278': 'High '
                                                                    'quality'},
                                                    {'10942626332': 'Low '
                                                                    'quality'},
                                                    {'10942626375': 'Very high '
                                                                    'quality'},
                                                    {'10942626430': 'Low '
                                                                    'quality'},
                                                    {'10942626492': 'Low '
                                                                    'quality'}],
 'How would you rate the value for money of the product?': [{'10942625544': 'Above '
                                                                            'average'},
                                                            {'10942625600': 'Below '
                                                                            'average'},
                                                            {'10942625675': 'Average'},
                                                            {'10942625736': 'Excellent'},
                                                            {'10942625788': 'Above '
                                                                            'average'},
                                                            {'10942625827': 'Below '
                                                                            'average'},
                                                            {'10942625878': 'Average'},
                                                            {'10942625932': 'Average'},
                                                            {'10942625977': 'Above '
                                                                            'average'},
                                                            {'10942626027': 'Above '
                                                                            'average'},
                                                            {'10942626071': 'Above '
                                                                            'average'},
                                                            {'10942626128': 'Average'},
                                                            {'10942626180': 'Excellent'},
                                                            {'10942626227': 'Average'},
                                                            {'10942626278': 'Average'},
                                                            {'10942626332': 'Below '
                                                                            'average'},
                                                            {'10942626375': 'Excellent'},
                                                            {'10942626430': 'Poor'},
                                                            {'10942626492': 'Below '
                                                                            'average'}],

我已经尝试过将嵌套字典写入 CSV,但我正在努力使其适应我的具体情况。

我的代码目前看起来像:

def writeToCsv(finalDict):
    csv_columns = ['Question', 'UserID', 'Answer']
    filename = "output.csv"
    with open(filename, "w") as filename:
        w = csv.DictWriter(filename, fieldnames=csv_columns)
        w.writeheader()
        for data in finalDict: #where I'm stuck

任何建议将不胜感激!

标签: pythoncsvdictionary

解决方案


for question, data in finalDict.items():
   for resp in data:
       row = {'Question': question,
              'UserID': list(resp.keys())[0],
              'Answer': list(resp.values())[0]}
       w.writerow(row)

推荐阅读