繁体   English   中英

如何将嵌套字典写入 CSV 文件?

[英]How can I write a nested dictionary to a CSV file?

我正在尝试将嵌套字典写入 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

任何建议将不胜感激!

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)

这是一个选项:

def writeToCsv(finalDict):
    csv_columns = ['Question', 'UserID', 'Answer']
    filename = "output.csv"
    with open(filename, "w") as fl:
        w = csv.DictWriter(fl, fieldnames=csv_columns, lineterminator='\n')
        w.writeheader()
        for question, data in finalDict.items()
            for item in data:
                for user, answer in item.items():
                    w.writerow(dict(zip(csv_columns, (question, user, answer))))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM