将 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 吗? 不确定。可能是因为一列只有一种数据类型(如int
或float
)。检查此线程以查看如何更改列的数据类型:***.com/questions/21291259/…【参考方案2】:
您可以循环访问文件中的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
【讨论】:
以上是关于将 Python 字典写入 CSV的主要内容,如果未能解决你的问题,请参考以下文章