我想读取每个文件,如下所示:
{
"addr": {
"street": "29393",
"apt": "203",
"addr1": "Oak Avenue",
"addr2": "Suite 2",
"city": "Denvrer",
"state": "CO"
},
"disposition": "available",
"location": {
"latitude": "203030303",
"longitude": "929393"
}
}
然后如何在该JSON中获取一排以名称分隔的字段?我想要一个唯一的以名称分隔的字段的列表,像这样:
addr.street
addr.apt
addr.addr1
addr.addr2
addr.city
addr.st
disposition
location.latitude
location.longitude
如何在Python3中实现?
答案 0 :(得分:1)
对于您这里需要的目的,这已经足够了:
def get_field_list(somedict, parent=''):
fieldlist = []
for k, v in somedict.items():
if parent:
fieldlist.append(f"{parent}.{k}")
if isinstance(v, dict):
fieldlist += get_field_list(v, parent=k)
return sorted(set(fieldlist))
结果将是:
['addr.addr1', 'addr.addr2', 'addr.apt', 'addr.city', 'addr.state', 'addr.street', 'location.latitude','location.longitude']
您可以尝试整个过程 https://repl.it/@raa/InsubstantialOutstandingStartups
但是您需要考虑数组中的对象是否有发生的可能性,并且这些字段在整个层次结构中都是唯一的,而此代码不会招待您。