将具有多个值的dict列表写入多个文件的Python脚本

将具有多个值的dict列表写入多个文件的Python脚本,python,pandas,csv,pandas-groupby,Python,Pandas,Csv,Pandas Groupby,我有一份清单,如下所示。我希望根据键将DICT写入多个excel或csv文件。如果密钥相同,则它们应位于一个文件中 我的遗嘱清单: [{'john': ['0', '100']}, {'john': ['4', '101']}, {'john': ['0', '102']}, {'mary': ['2', '100']}, {'mary': ['5', '101']}, {'mary': ['4', '102']}, {'mary': ['1', '103']}, {'sam': ['4', '

我有一份清单,如下所示。我希望根据键将DICT写入多个excel或csv文件。如果密钥相同,则它们应位于一个文件中

我的遗嘱清单:

[{'john': ['0', '100']}, {'john': ['4', '101']}, {'john': ['0', '102']}, {'mary': ['2', '100']}, {'mary': ['5', '101']}, {'mary': ['4', '102']}, {'mary': ['1', '103']}, {'sam': ['4', '100']}, {'sam': ['3', '101']}, {'sam': ['12', '102']}, {'paul': ['2', '100']}, {'hay': ['2', '100']}, {'hay': ['1', '102']}, {'mercy': ['4', '101']}]
到目前为止,我的代码是:

x = []
i = 0
for ii, line in enumerate(my_list_of_dicts):
    with open("out_%s.csv" % i, 'w+') as f:
        if line.keys() not in x:
            x.append(line.keys())
            i += 1
            pd.DataFrame.from_dict(data=line, orient='index').to_csv(f, header=False)
        else:
            pd.DataFrame.from_dict(data=line, orient='index').to_csv(f, header=False)
结果:

我得到的是所需数量的文件,但不是内容

期望:

我希望获得每个密钥对应的文件,即(约翰、玛丽、山姆、杰伊、保罗、海伊和梅西)以及以下内容。以约翰为例:

john, 0, 100 
john, 4, 101
john, 0, 102

我不知道如何进行,甚至不知道是否需要列举。谢谢

更好的方法是将数据聚合到单个数据帧中,然后迭代
groupby
对象:

# construct dataframe from list of dictionaries
df = pd.DataFrame([[k, *v] for dct in L for k, v in dct.items()])
df[[1, 2]] = df[[1, 2]].apply(pd.to_numeric)

# iterate groupby object and export to separate CSV files
for key, df_key in df.groupby(0):
    df_key.to_csv(f'{key}.csv', index=False, header=False)

你的意思是在for循环中使用i而不是ii吗?不,这就是为什么我说我不确定使用enumerate是不是正确的想法,因为ii没有正常使用,如果你不打算使用那样的东西,你会使用的,好吧,现在我知道了。非常感谢。