나는 이것에 동그라미 가깝지만 회전하고 있다고 생각한다. JSON에서 가져온 파이썬 사전이 있습니다. 원시 데이터는 여기에 게시하기에는 너무 많습니다. 코드는 원하는대로 작동하고 원하는 것을 인쇄합니다. 단, 사전의 마지막 값만 반환한다는 점이 다릅니다. 모든 값을 반환하고 정확하게 여기에 표시되는 방법을 인쇄하려면 어떻게 수정해야합니까? 궁극적으로이 데이터를 가져 와서 데이터베이스에 하나의 항목으로 추가하려고합니다.파이썬에서 중첩 된 사전 값 추출하기
코드 :
text = json.loads(content)
a = {}
def extract(DictIn, Dictout):
for key, value in DictIn.iteritems():
if isinstance(value, dict):
extract(value, Dictout)
elif isinstance(value, list):
for i in value:
extract(i, Dictout)
else:
Dictout[key] = value
extract(text, a)
for k, v in a.iteritems():
print k, ":", v
결과는 다음과 같이, 그러나 다른 40 개 정도의 항목이 있어야합니다. 현재 코드는 마지막 항목을 보여줍니다
datetime : 2014-06-10T20:00:00-0600
date : 2014-06-10
href : http://xxxxxxxxxxxx.json
lng : -94.5554
id : 17551289
createdAt : 2013-07-30T12:18:56+0100
city : Kansas City, MO, US
billing : headline
totalEntries : 37
type : Concert
billingIndex : 1
status : ok
perPage : 50
setlistsHref : xxxxxxxxxxxx:51b7f46f-6c0f-46f2-9496-08c9ec2624d4/setlists.json
lat : 39.0763
displayName : Ben Folds
eventsHref : http://xxxxxxx.08c9ec2624d4/calendar.json
popularity : 0.0
uri : xxxxxxxxxxxxxxxxxx
mbid : xxxxxxxxxxx
onTourUntil : 2014-06-10
time : 20:00:00
page : 1
? 또는 최상위 수준이 배열 인 경우? – user2357112
나는 json 자체를 살펴볼 것을 제안합니다. DictOut에서 키를 덮어 쓸 가능성이 있습니다. 이는 dict/list json 트리의 'leaves'가 동일한 키 이름을 가지므로 그 리프를 '평평하게'할 때 동일한 키를 가진 이전에 병합 된 리프를 덮어 쓰게됩니다. 그래서 다른 모든 것들을 덮어 썼기 때문에 단지 하나의 엔트리를 얻는 것처럼 보입니다. – dilbert