我觉得我很接近,但在这个圈子里旋转。我在Python中有一个从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
答案 0 :(得分:0)
问题在于您的Dictout[key] = value
在Python词典中,keys
为unique
假设
_d = {1: 'one', 2: 'two'}
>>> print _d
{1: 'one', 2: 'two'}
>>> _d[1] = 'another one'
>>> print _d
{1: 'another one', 2: 'two'}
我想在你的for循环中你是现有overwriting value
的{{1}},这就是为什么只有你的最后一个条目被存储了!。
尝试更改数据结构,例如key
,以便输出看起来像
list of dictionaries