You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 03:40:33