Python字典以所需格式转换为CSV

Python字典以所需格式转换为CSV,python,pandas,csv,Python,Pandas,Csv,我有一个python字典,看起来如下所示: { key1: [value1, value2, value3, n], key2: [value1, value2, value3, n], key3: [value1, value2, value3, n], key4: [value1, value2, value3, n] } 我想将这些值写入csv文件,格式为每行包含键作为标题,并在该键下逐行显示相关值。也许可以为您提供一种更直接的实现方法,但如果您只想依赖标准库中的csv包

我有一个python字典,看起来如下所示:

{
  key1: [value1, value2, value3, n],
  key2: [value1, value2, value3, n],
  key3: [value1, value2, value3, n],
  key4: [value1, value2, value3, n]
}
我想将这些值写入csv文件,格式为每行包含键作为标题,并在该键下逐行显示相关值。

也许可以为您提供一种更直接的实现方法,但如果您只想依赖标准库中的csv包,则应采用以下简单方法:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import csv


data = {
    'key1': ['value1', 'value2', 'value3', 'n'],
    'key2': ['value1', 'value2', 'value3', 'n'],
    'key3': ['value1', 'value2', 'value3', 'n'],
    'key4': ['value1', 'value2', 'value3', 'n']
}

header = data.keys()
no_rows = len(data[list(header)[0]])

with open('out.csv', 'w', newline='') as csvfile:
    csvwriter = csv.writer(csvfile, delimiter=',')
    csvwriter.writerow(header)
    for row in range(no_rows):
        csvwriter.writerow([data[key][row] for key in header])
这导致

key1,key2,key3,key4
value1,value1,value1,value1
value2,value2,value2,value2
value3,value3,value3,value3
n,n,n,n
希望这有帮助

编辑

由于这是目前公认的答案,我觉得我应该补充一点,这确实为实现这一目标提供了更直接的途径,正如其他答案所述:

import pandas as pd

pd.DataFrame(data).to_csv('out.csv', index=False)
根据您的系统,可能使用不同的行终止符生成与上述相同的输出。

也许可以为您提供一种更直接的方法来实现这一点,但如果您只想依赖标准库中的csv包,则应采用以下简单方法:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import csv


data = {
    'key1': ['value1', 'value2', 'value3', 'n'],
    'key2': ['value1', 'value2', 'value3', 'n'],
    'key3': ['value1', 'value2', 'value3', 'n'],
    'key4': ['value1', 'value2', 'value3', 'n']
}

header = data.keys()
no_rows = len(data[list(header)[0]])

with open('out.csv', 'w', newline='') as csvfile:
    csvwriter = csv.writer(csvfile, delimiter=',')
    csvwriter.writerow(header)
    for row in range(no_rows):
        csvwriter.writerow([data[key][row] for key in header])
这导致

key1,key2,key3,key4
value1,value1,value1,value1
value2,value2,value2,value2
value3,value3,value3,value3
n,n,n,n
希望这有帮助

编辑

由于这是目前公认的答案,我觉得我应该补充一点,这确实为实现这一目标提供了更直接的途径,正如其他答案所述:

import pandas as pd

pd.DataFrame(data).to_csv('out.csv', index=False)
根据您的系统,可能使用不同的线路终端产生与上述相同的输出。

pandas为问题提供了非常直接的解决方案-

import pandas as pd 
df = pd.DataFrame({
  'key1': ['value1', 'value2', 'value3', 'n'],
  'key2': ['value1', 'value2', 'value3', 'n'],
  'key3': ['value1', 'value2', 'value3', 'n'],
  'key4': ['value1', 'value2', 'value3', 'n']
})
df.to_csv('/path/to/file')
熊猫为这个问题提供了一个非常直接的解决方案-

import pandas as pd 
df = pd.DataFrame({
  'key1': ['value1', 'value2', 'value3', 'n'],
  'key2': ['value1', 'value2', 'value3', 'n'],
  'key3': ['value1', 'value2', 'value3', 'n'],
  'key4': ['value1', 'value2', 'value3', 'n']
})
df.to_csv('/path/to/file')

请显示您想要实现的CSV输出。使用pd.DataFrameyour_dict.to_CSV'file.CSV'请显示您想要实现的CSV输出。使用pd.DataFrameyour_dict.to_CSV'file.CSV'