gpt4 book ai didi

python - 属性错误: 'str' object has no attribute 'keys' error in getting json object keys

转载 作者:太空宇宙 更新时间:2023-11-03 21:11:03 25 4
gpt4 key购买 nike

我正在尝试将 json 对象转换为 csv 文件。当我传递 obj 并打印它时,它工作得很好。但是当我从 #Problem 行继续时,我收到 AttributeError: 'str' object has no attribute 'keys'。我传递了完全相同的对象。如何修复这个错误并让它正常运行?

import json
import csv
import os

def flattenjson( b, delim ):
val = {}
for i in b.keys():
if isinstance( b[i], dict ):
get = flattenjson( b[i], delim )
for j in get.keys():
val[ i + delim + j ] = get[j]
else:
val[i] = b[i]
return val

jjj = {
"pk": 22,
"model": "auth.permission",
"fields": {
"codename": "add_message",
"name": "Can add message",
"content_type": 8
}
}

print(flattenjson(jjj , "__" ))
#Problem
input = map( lambda x: flattenjson( x, "__" ), jjj )

columns = [ x for row in input for x in row.keys() ]
columns = list( set( columns ) )

with open( 'sad.csv', 'wb' ) as out_file:
csv_w = csv.writer( out_file )
csv_w.writerow( columns )

for i_r in input:
csv_w.writerow( map( lambda x: i_r.get( x, "" ), columns ) )

最佳答案

在 lambda 函数中迭代时,您给出唯一被视为字符串的键

因此,以下解决方案可能适合您。

编辑了代码,而不是传递唯一的键作为参数,我传递了一个新的字典。

input = map( lambda x: flattenjson({x: jjj[x]}, "__" ), jjj )

关于python - 属性错误: 'str' object has no attribute 'keys' error in getting json object keys,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55056797/

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