You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中自动生成字典并写入CSV文件

问题:如何从Python对象属性自动生成字典用于CSV写入?

Hey there! 看你的代码已经能正常工作了,但手动定义p_1到p_9再一个个拼字典确实有点繁琐,尤其是属性多的时候容易出错。刚好你已经把需要的属性名存在了objects列表里,咱们可以用Python的内置函数getattr()来动态生成目标字典,代码会简洁很多!

首先先修正一个小问题:你的objects列表里'childproc_count'和'cmdline'之间少了个逗号,会导致语法错误,正确的列表应该是:

objects=['childproc_count', 'cmdline', 'comms_ip', 'crossproc_count', 'filemod_count', 'filtering_known_dlls', 'group', 'host_type', 'id']

接下来就是核心的优化部分:把循环里手动生成字典的代码替换成动态遍历属性的方式。getattr(x, attr)的作用就是获取对象x中名为attr的属性值,和你写x.id、x.childproc_count是完全一样的效果,只不过是动态适配属性名的。

修改后的循环代码如下:

with open(my_path, 'w', newline='') as file:
    header = objects #add column headers
    writer = csv.DictWriter(file, fieldnames=header)
    writer.writeheader()
    for x in process_query:
        # 动态生成目标字典:遍历属性列表,自动获取对应属性值
        # 如果有些属性不是字符串类型,需要转成字符串的话,就用str(getattr(x, attr))
        dd = {attr: str(getattr(x, attr)) for attr in objects}
        #Write rows to csv file
        writer.writerow(dd)

这样一来,不管你后续要加多少个属性,只要把属性名加到objects列表里,代码就能自动生成对应的字典,完全不用手动一个个定义变量再拼字典了,非常适合你现在的需求!

内容的提问来源于stack exchange,提问作者Coder123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 09:22:53