Skip to main content
 首页 » 编程设计

Python 将字典列表写入 csv

2025年05月04日1252php

我遇到了一个问题。 我有一个看起来像这样的字典列表:

dict_list=[{'alfa':['001','2'], 'beta':['001','3'], 'gamma':['001','2']}, 
           {'alfa':['002','6'], 'beta':['002','4'], 'omega':['002','7']}] 

我的意图是像这样创建一个 csv:

WORD, TEXT, FREQ 
alfa, 001,  2 
alfa, 002,  6 
beta, 001,  3 
beta, 002,  4 
gamma,001,  2 
omega,002,  7 

你认为有可能解决吗?

请您参考如下方法:

pandas 提供了一种非常直观的方式来考虑遍历字典列表。因为列表中的每个元素都是一个 dict,可以很容易地转换为 pandas.DataFrame,所以您可以循环遍历列表,创建一个 DataFrame 为每个元素,然后 concat 它们。

In [20]: l = [] 
 
In [21]: for dct in dict_list: 
    ...:     l.append(  
    ...:         pandas.DataFrame(dct).transpose()  
    ...:     )  
 
In [22]: tmp = pandas.concat(l) # aggregate them all 
In [23]: print(tmp) 
Out[23]: 
         0  1 
alfa   001  2 
beta   001  3 
gamma  001  2  
alfa   002  6 
beta   002  4 
omega  002  7 

pandas 很容易写入 csv,所以你可以这样做:

 In [21]: tmp.to_csv('/my-file-path.csv') 

使用 pandas 对象,您可以对它们进行排序(如您想要的结果):

In [24]: tmp.sort_index() 
Out[24]: 
         0  1 
alfa   001  2 
alfa   002  6 
beta   001  3 
beta   002  4 
gamma  001  2 
omega  002  7 

还有很多,更多!要准确复制您要查找的内容,只需重命名 Index 和列,如下所示:

In [30]: tmp.index.name = 'WORD' 
In [36]: tmp = tmp.rename(columns={0: 'TEXT', 1: 'FREQ'}) 
In [37]: print(tmp) 
 
      TEXT FREQ 
WORD 
alfa   001    2 
beta   001    3 
gamma  001    2 
alfa   002    6 
beta   002    4 
omega  002    7