使用Python将字典写入CSV

3
希望您能帮我处理这个问题。
我有一个像这样的嵌套字典:
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

你能帮我处理一下这个问题吗?

谢谢!


2
循环遍历字典并将行写入CSV文件。 - Prudhvi
这是一个重复的问题吗?https://stackoverflow.com/questions/38798987/write-nested-dictionary-to-csv - ScienceSnake
2个回答

1
你可以将字典导入到pandas数据框中。然后可以将其导出为csv,不包含列名,以达到您所需的目的。
以下代码片段可以实现此操作:
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会将单个小数值如90格式化为90.0在CSV中吗? - nouse4it
不确定。可能是因为一个列只有单一的数据类型(例如 intfloat)。请查看此线程以了解如何更改列的数据类型:https://dev59.com/0WEi5IYBdhLWcg3wbrzS - Ishwar Venugopal

1
你可以遍历dict并在文件中print:
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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接