我有一个通过XHR请求返回的JSON对象,它采用以下格式:
[[[13, u'Arsenal', [[[[u'goal', u'openplay', u'header', [1]], [u'goal', u'openplay', u'leftfoot',
[1]], [u'goal', u'openplay', u'rightfoot', [3]], [u'goal', u'owngoal', u'rightfoot', [1]], [u'miss',
u'corner', u'header', [2]], [u'miss', u'corner', u'leftfoot', [3]], [u'miss', u'corner', u'rightfoot',
[2]], [u'miss', u'crossedfreekick', u'rightfoot', [2]], [u'miss', u'directfreekick', u'leftfoot', [1]],
[u'miss', u'openplay', u'header', [2]], [u'miss', u'openplay', u'leftfoot', [16]], [u'miss',
u'openplay', u'rightfoot', [23]]]]]]
其中responser
是上面的JSON对象,我使用以下代码将此嵌套列表转换为带有字典键元组的Python字典:
for match in responser:
for num_events, team, events in match:
regex = {tuple(sub[:3]): sub[3][0] for y in events[0] for sub in y}
但是,当我尝试在下面的嵌套列表中使用相同的对象时:
[[[13, u'Arsenal', [[6.125, [[u'assist', u'cross', [3]], [u'normal', u'cross', [198]], [u'normal',
u'longball', [326]], [u'assist', u'short', [5]], [u'normal', u'short', [4726]], [u'assist',
u'throughball', [1]], [u'normal', u'throughball', [35]]]]]]
我收到以下错误:
exceptions.TypeError: 'float' object is not iterable
谁能告诉我这里做错了什么?我可以看到第二个例子中的JSON嵌套列表在结构上与第一个略有不同,但我不知道如何修改我的代码来适应这个,或者特别是为什么我收到这个错误。
由于
答案 0 :(得分:0)
这是因为6.125
值:您的代码并不能说明它在那里。此外,每个迷你主义者都有2个项目而不是3个,并且代码需要相应调整。
我能让它发挥作用的唯一方法就是把它分解成碎片。你不想把太多的东西塞进列表/字典理解中:
这是我转换第一个列表的代码:
>>> d = {}
>>> for a in responser[2][0][0]:
... d.update({tuple(a[:3]): a[3][0]})
这是我转换第二个列表的代码。 " 1"是获取6.125值后的项目。并且" 3"元素更改为" 2":
>>> d = {}
>>> for a in responser[2][0][1]:
... d.update({tuple(a[:2]): a[2][0]})
...