Files
simulated-examination/ q2_1_crawler/q2_2.py

55 lines
1.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import json
from collections import defaultdict
# 读取json文件
with open("movies.json", "r", encoding="utf-8") as f:
movies = json.load(f)
# ① 找出评分最高、最低电影
def get_rating_extreme():
# 按rating排序
sorted_movies = sorted(movies, key=lambda x: x["rating"])
lowest = sorted_movies[0]
highest = sorted_movies[-1]
print("=== ① 评分极值 ===")
print(f"评分最低电影:{lowest['title']},评分:{lowest['rating']}")
print(f"评分最高电影:{highest['title']},评分:{highest['rating']}")
return highest, lowest
# ② 统计各类型电影数量genre为列表拆分统计
def count_genre():
genre_count = defaultdict(int)
for movie in movies:
genres = movie["genre"]
for g in genres:
genre_count[g] += 1
print("\n=== ② 各类型电影数量(字典格式)===")
print(dict(genre_count))
return dict(genre_count)
# ③ 统计各导演电影数量
def count_director():
dir_count = defaultdict(int)
for movie in movies:
d = movie["director"]
dir_count[d] += 1
print("\n=== ③ 各导演电影数量(字典格式)===")
print(dict(dir_count))
return dict(dir_count)
# ④ 统计2020年以后上映电影数量
def count_after_2020():
cnt = 0
for movie in movies:
if movie["year"] >= 2020:
cnt += 1
print("\n=== ④ 2020年后上映电影数量 ===")
print(f"总数:{cnt}")
return cnt
# 执行全部分析逻辑
if __name__ == "__main__":
get_rating_extreme()
count_genre()
count_director()
count_after_2020()