【问题标题】:How to loop through a list of dictionaries and write the values as individual columns in a CSV如何遍历字典列表并将值作为单个列写入 CSV
【发布时间】:2020-01-13 18:11:58
【问题描述】:

我有一个字典列表

d = [{'value':'foo_1', 'word_list':['blah1', 'blah2']}, ...., {'value': 'foo_n', 'word_list':[' meh1', 'meh2']}]

我想将其写入一个 CSV 文件,其中所有“值”键在一列中,然后将“值”的 word_list 中的每个单词作为其自己的列。所以我将第一行作为

foo_1 blah_1 blah_2

等等。

我不知道我有多少词典,也不知道“word_list”中有多少单词。

我将如何在 Python 3 中执行此操作?

谢谢!

【问题讨论】:

    标签: python-3.x dictionary export-to-csv


    【解决方案1】:

    在将每一行写入文件之前,将其展平为一个普通列表可能是最简单的。像这样的:

    with open(filename, 'w') as file:
        writer = csv.writer(file)
        for row in data:
            out_row = [row['value']]
            for word in row['word_list']:
                out_row.append(word)
            csv.writerow(out_row)
        # Shorter alternative to the two loops:
        # csv.writerow((row['value'], *row['word_list']) for row in data)
    

    【讨论】:

      【解决方案2】:

      我想出了一个解决方案,但它有点乱(哇,如果没有“正确的格式”,我就不能写一点代码......真烦人):

      with open('filename', 'w') as f:
          for key in d.keys():
            f.write("%s,"%(key))
          for word in d[key]:
            f.write("%s,"%(word))
          f.write("\n")
      

      【讨论】:

        【解决方案3】:

        您可以一次遍历一个字典,构建列表,然后使用 csv 模块写入数据,如我在此处显示的那样

        import csv
        
        d = [{'value':'foo_1', 'word_list':['blah1', 'blah2']}, {'value': 'foo_n', 'word_list':['meh1', 'meh2']}]
        
        with open('test_file.csv', 'w') as file:
            writer = csv.writer(file)
            for val_dict in d:
                csv_row = [val_dict['value']] + val_dict['word_list']
                writer.writerow(csv_row)
        

        它应该适用于任意长度的单词列表和任意数量的字典。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-06-17
          • 2020-05-29
          • 2018-03-10
          • 2012-11-23
          • 1970-01-01
          相关资源
          最近更新 更多