将包含一些标量和一些数组值的字典编写为csv - python

我有一本类似于以下示例的字典:

dict = {key1: value1, key2: [arrayValue1, arrayValue2]}

我想以以下格式将其写入CSV文件:

key1     key2
value1   arrayValue1
         arrayValue2

通过搜索类似的问题,我发现了如果所有值都是标量或数组都可以写字典的方式,但是如果值是两者的组合,我还没有找到答案。

我有以下代码用于编写标量值:

with open(filename, 'w') as f:  
        w = csv.DictWriter(f, dict.keys())
        w.writeheader()
        w.writerow(dict)

以及以下用于编写数组值的代码:

with open(filename, "w") as outfile:
        writer = csv.writer(outfile)
        writer.writerow(dict.keys())
        writer.writerows(zip(*dict.values()))

提前致谢。

参考方案

不要声明名为dict的变量,因为这代表我们将在此处使用的Python内置函数。而是使用dct之类的东西。

dct = {"key1": "value1", "key2": ["arrayValue1", "arrayValue2"]}

首先,将每个标量放入数组中。

myvalues = [ x if isinstance(x, list) else [x] for x in dct.values() ]

接下来,使每个数组与最大数组一样长。用空字符串填充空白。

maxlength = max([len(x) for x in myvalues])
myvalues = [ x + (maxlength - len(x))*[""] for x in myvalues ]

现在,您可以重建字典,将其转换为pandas DataFrame并将其保存为CSV文件。

import pandas as pd
dct = dict(zip(dct.keys(), myvalues))
df = pd.DataFrame.from_dict(dct)
df.to_csv("your_filename_goes_here.csv", index=False)

然后,您有了文件。

将包含一些标量和一些数组值的字典编写为csv - python

Python GPU资源利用 - python

我有一个Python脚本在某些深度学习模型上运行推理。有什么办法可以找出GPU资源的利用率水平?例如,使用着色器,float16乘法器等。我似乎在网上找不到太多有关这些GPU资源的文档。谢谢! 参考方案 您可以尝试在像Renderdoc这样的GPU分析器中运行pyxthon应用程序。它将分析您的跑步情况。您将能够获得有关已使用资源,已用缓冲区,不同渲染状态上…

Python-crontab模块 - python

我正在尝试在Linux OS(CentOS 7)上使用Python-crontab模块我的配置文件如下:{ "ossConfigurationData": { "work1": [ { "cronInterval": "0 0 0 1 1 ?", "attribute&…

Python sqlite3数据库已锁定 - python

我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…

Python exchangelib在子文件夹中读取邮件 - python

我想从Outlook邮箱的子文件夹中读取邮件。Inbox ├──myfolder 我可以使用account.inbox.all()阅读收件箱,但我想阅读myfolder中的邮件我尝试了此页面folder部分中的内容,但无法正确完成https://pypi.python.org/pypi/exchangelib/ 参考方案 您需要首先掌握Folder的myfo…

Python Pandas导出数据 - python

我正在使用python pandas处理一些数据。我已使用以下代码将数据导出到excel文件。writer = pd.ExcelWriter('Data.xlsx'); wrong_data.to_excel(writer,"Names which are wrong", index = False); writer.…