我一直在搜寻无济于事,希望有人能指出我正确的方向。我试着:
我的代码是:
url = "http://hypem.com/playlist/tags/dance/json/1/data.js"
output = json.load(urllib.urlopen(url))
output = output.values() #convert dict to list
output = output.sort(key=itemgetter('loved_count')) #sort list by loved_count
这给了我以下错误:
output = output.sort(key=itemgetter('loved_count')) #sort list by loved_count
TypeError: string indices must be integers
有什么想法让我搞砸了吗?提前致谢!
列表中的一项不是字典:
>>> import urllib
>>> import json
>>> url = "http://hypem.com/playlist/tags/dance/json/1/data.js"
>>> output = json.load(urllib.urlopen(url))
>>> for x in output.values():
... print(type(x))
...
<type 'dict'>
<type 'dict'>
<type 'dict'>
<type 'dict'>
<type 'dict'>
<type 'unicode'>
<type 'dict'>
....
>>> u'1.1'['loved_count']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: string indices must be integers
您可以通过过滤掉非字典项来解决:
>>> items = [x for x in output.values() if isinstance(x, dict)]
>>> items.sort(key=itemgetter('loved_count'))
# No error.
但是,我宁愿问数据提供者数据有什么问题,因为支持数组/列表包含异类数据。
顺便说一句,代码正在分配的返回值sort
。sort
回报None
; 您会丢失列表。删除作业,只需致电sort
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句