如何用Python存储电影ID、标题、类型并实现排序?当前仅支持键值对存储
解决方案
你完全可以用字典来存储所有三个字段——只要把字典的值设为包含多个字段的结构就行,比如元组或者嵌套字典,这样就能同时保存标题和类型信息。下面给你具体的实现方法:
1. 修改字典的存储结构
读取CSV时,把每个电影的标题和类型打包成元组(或嵌套字典)作为值,键还是用ID:
用元组存储多字段
import csv movies = {} with open('movies_20.csv', 'r', newline='', encoding='utf-8') as f: reader = csv.reader(f) next(reader) # 跳过表头(如果CSV有表头的话) for row in reader: movie_id = row[0] title = row[1] genre = row[2] movies[movie_id] = (title, genre) # 值是包含标题和类型的元组
用嵌套字典存储(更直观)
import csv movies = {} with open('movies_20.csv', 'r', newline='', encoding='utf-8') as f: reader = csv.reader(f) next(reader) for row in reader: movie_id = row[0] movies[movie_id] = { 'title': row[1], 'genre': row[2] }
2. 按不同字段排序
有了完整的存储结构后,用sorted()函数配合key参数就能实现按任意字段排序:
按电影ID排序
# 按ID升序排序(如果ID是数字字符串,转成int确保数值排序) sorted_by_id = sorted(movies.items(), key=lambda x: int(x[0])) # 若ID本身是字符串格式的编码(非数字),直接用原字符串排序: sorted_by_id = sorted(movies.items(), key=lambda x: x[0])
按电影标题排序
# 元组存储的情况:x[1][0]对应标题,lower()忽略大小写差异 sorted_by_title = sorted(movies.items(), key=lambda x: x[1][0].lower()) # 嵌套字典的情况:x[1]['title']对应标题 sorted_by_title = sorted(movies.items(), key=lambda x: x[1]['title'].lower())
按电影类型排序
# 元组存储的情况:x[1][1]对应类型 sorted_by_genre = sorted(movies.items(), key=lambda x: x[1][1].lower()) # 嵌套字典的情况:x[1]['genre']对应类型 sorted_by_genre = sorted(movies.items(), key=lambda x: x[1]['genre'].lower())
3. 补充说明
- 如果你的CSV文件没有表头,记得删除
next(reader)这一行代码。 - 排序后的结果是列表类型,每个元素是
(ID, (title, genre))或(ID, {'title': ..., 'genre': ...})的形式,方便后续遍历处理。
内容的提问来源于stack exchange,提问作者Petite Foufoune
相关产品推荐
相关产品推荐

