gpt4 book ai didi

python - 我需要打印具有不同字段的不同字典,ValueError : dict contains fields not in fieldnames:

转载 作者:行者123 更新时间:2023-12-01 00:50:52 26 4
gpt4 key购买 nike

我有 4 个字典,有些字段并不存在于所有 4 个字典中。我收到此错误

ValueError: dict contains fields not in fieldnames: 'from', 'Command'

阅读一些文档后,我发现 DictWriter 的 extrasaction='ignore' 参数,但它遗漏了 CSV 文件中的一些字段。我需要 CSV 文件中的所有字段,即使某些词典的字段为空。据我了解,它只是打印公共(public)字段。

字典是:

{'Command': 'DELETE', 'table': 'abc', 'from': 'abc', 'where_expr': 'c = book'}

{'Command': 'SELECT', 'columns': 'a b', 'table': 'tab1', 'from': 'tab1'}

{'Command': 'INSERT', 'table': 'xyz', 'into': 'xyz', 'columns': 'pencil pens', 'values': '200 20'}

{'Command': 'UPDATE', 'table': 'Student', 'columns': 'NAME', 'values': 'PRATIK', 'where_expr': 'a = 100'}

由于错误,我已包含 extrasaction。

with open('del.csv', 'w') as f:  
write = csv.DictWriter(f, dict4.keys(),extrasaction='ignore')
write.writeheader()
write.writerow(dict5)
write.writerow(dict6)
write.writerow(dict7)
write.writerow(dict8)

输出看起来像这样:(我使用逗号分隔字段。空格表示空字段(它们没有值))

table| columns|values| where_expr

abc, , ,c = book

tab1,a b, , ,

xyz, pencil pens,200 20,

Student ,NAME, PRATIK, a = 100

编辑:所需的输出是:(空白意味着空白字段)我希望我可以发布 CSV 文件。

Command|Table|Columns|From|Where_expr|Into|Values

DELETE,abc, ,abc,c = book, , ,

SELECT,tab1, a b,tab1, , , ,

INSERT,xyz,pencil pens, , ,xyz, 200 20

UPDATE, student,name, ,a = 100, , PRATIK

最佳答案

set.union操作(对于具有动态列数的情况):

import csv

dict5 = {'Command': 'DELETE', 'table': 'abc', 'from': 'abc', 'where_expr': 'c = book'}
dict6 = {'Command': 'SELECT', 'columns': 'a b', 'table': 'tab1', 'from': 'tab1'}
dict7 = {'Command': 'INSERT', 'table': 'xyz', 'into': 'xyz', 'columns': 'pencil pens', 'values': '200 20'}
dict8 = {'Command': 'UPDATE', 'table': 'Student', 'columns': 'NAME', 'values': 'PRATIK', 'where_expr': 'a = 100'}

with open('names.csv', 'w', newline='') as csvfile:
# `initial_fieldnames` are your dict4 keys
initial_fieldnames = ["table", "columns", "values", "where_expr"]
fieldnames = sorted(set(initial_fieldnames).union(*[dict5, dict6, dict7, dict8]))
writer = csv.DictWriter(csvfile, fieldnames=fieldnames, extrasaction='ignore')

writer.writeheader()
writer.writerows([dict5, dict6, dict7, dict8])
<小时/>

names.csv 内容:

Command,columns,from,into,table,values,where_expr
DELETE,,abc,,abc,,c = book
SELECT,a b,tab1,,tab1,,
INSERT,pencil pens,,xyz,xyz,200 20,
UPDATE,NAME,,,Student,PRATIK,a = 100

关于python - 我需要打印具有不同字段的不同字典,ValueError : dict contains fields not in fieldnames:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56579442/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com