gpt4 book ai didi

Python:按键排序列表返回错误: 'string must be integers'

转载 作者:行者123 更新时间:2023-11-28 21:57:17 25 4
gpt4 key购买 nike

我一直在寻找无济于事,希望有人能为我指明正确的方向。我正在尝试:

  • 调用一个包含 json 格式文件的 url
  • 将生成的字典转换为列表(我认为我不需要插入的键)
  • 通过键('loved_count')对该列表中的项目进行排序

我的代码是:

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

关于Python:按键排序列表返回错误: 'string must be integers',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20064940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com