我正在处理一个python文件,该文件从JSON文件提取电影及其详细信息,然后将数据保存到自定义电影对象。现在,我可以从庞大的列表中选择一部电影。
但是,我希望能够遍历并获得每种体裁,导演,演员并将其添加到单独的数组中。现在,当我尝试执行此操作时,出现此错误:
CombinePerKey
我还想创建一个包含标题,演员,导演和流派的自定义电影对象的数组。
这是我的代码:
{'P1': True, 'P2': True}
这是我的json数据:
Traceback (most recent call last):
File "/Users/leoconnelly/PycharmProjects/MLFinal/tester.py", line 27, in <module>
tempGenre = (contents['results'][i]['genre'])
TypeError: list indices must be integers or slices, not str
答案 0 :(得分:2)
您需要for i in range(len(content['results']))
,然后content['results'][i]
将作为list indices must be integers
完成for i in content
后,您将遍历内容字典的键,即字符串。
但是,contents['results']
是一个列表。您可以将它们作为完整的对象进行循环,而不必获取特定的数字索引。
这使用列表推导从结果列表中获取电影对象的完整列表。
with open('movies.json') as f:
contents = json.load(f)
results = contents.get('results', [])
movies = [
Movie(
r.get('title'),
r.get('director'),
r.get('genre'),
r.get('cast')
) for r in results ]
for m in movies:
print(m.name)
我希望能够遍历所有类型,导演,演员并将其添加到单独的数组中
您可以从制作的电影数组中进行类似的操作。
通过将set
对象放入列表,这将返回所有电影的唯一导演。
directors = list(set(m.director for m in movies if m.director is not None))