将数据从 Python 列表和字典写入 CSV

Flo*_*ude 5 python csv dictionary list pandas

假设mydict基于每个列表项是唯一的:

 mylist = ['li1', 'li2']
 mydict =  {'key1': 'value1','key2': 'value2','key3': 'value3}
Run Code Online (Sandbox Code Playgroud)

我想在一个CSV文件中写这个结构:

ListItem, key1, key2, key3
li1, value1, value2, value3
li2, value1, value2, value3
Run Code Online (Sandbox Code Playgroud)

这是我如何尝试这样做的示例;但是我的代码每次迭代都会覆盖第一行,我不知道如何在第一列中编写列表项。请你帮我一下好吗?

import pandas as pd
import random


def CreateDict(li):
    dict = {}
    dict['x'] = random.randrange(1, li)  #25
    dict['y'] = random.randrange(1, li)  #27
    print(dict)
    return dict

mylist = [10, 20, 30]
for li in mylist:
    mydict = CreateDict(li)
    df = pd.DataFrame([mydict])
    df.to_csv('test.csv', index=False)
Run Code Online (Sandbox Code Playgroud)

我得到这个作为输出:

x,y
25,27
Run Code Online (Sandbox Code Playgroud)

Shu*_*rma 4

让我们尝试dict.fromkeys生成数据字典,然后从该data字典创建一个数据框并用于DataFrame.to_csv保存为csv文件:

data = dict.fromkeys(mylist, mydict)
pd.DataFrame(data).T.rename_axis('ListItem').to_csv('foo.csv')
Run Code Online (Sandbox Code Playgroud)

编辑:如果您想为每个项目创建唯一的字典,mylist您可以使用:

data = {li:CreateDict(li) for li in mylist}
pd.DataFrame(data).T.rename_axis('ListItem').to_csv('foo.csv')
Run Code Online (Sandbox Code Playgroud)
# foo.csv

ListItem,key1,key2,key3
li1,value1,value2,value3
li2,value1,value2,value3
Run Code Online (Sandbox Code Playgroud)