将 Python 字典写入 CSV

Posted

技术标签:

【中文标题】将 Python 字典写入 CSV【英文标题】:Writing a Python Dictionary to CSV 【发布时间】:2021-05-15 01:34:49 【问题描述】:

希望你能帮我解决这个问题。

我有一个像这样的嵌套字典:

Inventory = 'devicename': 'Interface1': 'port_setting1': 'value', 'port_setting2': 'value', 'Interface2': 'port_setting1': 'value', 'port_setting2': 'value'

我想用以下格式创建一个 csv:

devicename, interface1, value of port_setting1, value of portsetting2
devicename, interface2, value of port_setting1, value of portsetting2

你能帮我解决这个问题吗?

谢谢!

【问题讨论】:

遍历字典并将行写入csv文件。 这是重复的吗? ***.com/questions/38798987/… 【参考方案1】:

您可以将字典导入熊猫数据框。然后可以将其导出为没有列名的 csv 来实现您的要求。

下面的代码 sn-p 可以解决问题:

import pandas as pd

df = pd.DataFrame.from_dict((i,j): Inventory[i][j] 
                           for i in Inventory.keys() 
                           for j in Inventory[i].keys(),
                       orient='index')
df.to_csv('test.csv', header = False)

这是您在问题中显示的名为 Inventory 的字典中的 test.csv 的样子:

devicename,Interface1,value,value
devicename,Interface2,value,value

【讨论】:

你知道为什么 Panda 在 csv 中将单个十进制值格式化为 90 到 90.0 吗? 不确定。可能是因为一列只有一种数据类型(如intfloat)。检查此线程以查看如何更改列的数据类型:***.com/questions/21291259/…【参考方案2】:

您可以循环访问文件中的dictprint

with open(filename.csv, 'w') as fh:
    for k, v in Inventory.items():
        for k1, v1 in v.items():
            print(k, k1, *v1.values(), file=fh, sep=', ')

或者理解:

with open(filename.csv, 'w') as fh:
    print(*(', '.join((k, k1, *v1.values())) 
           for k, v in Inventory.items() 
           for k1, v1 in v.items()), 
           file=fh, sep='\n'
     )

输出:

devicename, Interface1, value, value
devicename, Interface2, value, value

【讨论】:

以上是关于将 Python 字典写入 CSV的主要内容,如果未能解决你的问题,请参考以下文章

将多个列表写入 csv Python

在csv python中编写查询行

Python:将嵌套字典写入 CSV

Python - 需要帮助将字典字典写入 CSV 文件

将 Python 字典写入 InfluxDB?

将 Python 字典写入 CSV