字典和 CSV 文件

字典是 Python 中的一种数据结构,用于以键值对(key-value pair)的形式存储数据。它就像现实中的词典,通过单词(键)找到对应的解释(值)。

字典的特点:

  • 键必须是唯一的,而值可以重复。
  • 键和值可以是不同类型的数据,例如字符串、数字等。

在 Python 中,字典的表现形式是:

user_info = {"Name": "Alice", "Age": 30, "Role": "Admin"}
  • 键 Name 的值是 Alice,表示用户的名字。
  • 键 Age 的值是 30,表示用户的年龄。

为什么开发中要使用字典?

  1. 快速查找: 通过键查找值的效率非常高。
  2. 灵活性: 键和值可以是不同的数据类型,例如字符串、数字、甚至是嵌套字典。
  3. 动态修改: 可以随时增加、删除或修改键值对。
  4. 结构化表达: 字典非常适合描述一组结构化数据。

AI 产品经理为什么需要了解字典?

1. 处理结构化数据
AI 产品经理需要管理和分析大量数据。例如:

  • 用户信息(用户 ID、行为数据)。
  • 模型参数(学习率、批大小)。
  • 配置文件(功能开关)。

字典让这些复杂信息以清晰的结构组织在一起,便于理解和操作。

2. 用于数据存储和交换
字典可以轻松转换为 JSON 格式,这是现代 AI 产品中常见的数据传输和存储格式。例如,通过 API 发送请求时,字典可以表示参数:

request_payload = {
    "model": "gpt-4",
    "temperature": 0.7,
    "max_tokens": 100
}

3. 简化代码逻辑
在程序设计中,字典可以替代复杂的 if-else 语句,通过键值直接映射逻辑。例如,动态分配用户权限:

roles = {"Admin": "Full Access", "User": "Read-Only"}
print(roles["Admin"])  # 输出 Full Access

4. 协助自动化和批量操作
无论是生成批量报告、读取数据配置,还是动态设置参数,字典都能显著简化任务。例如:

  • 自动化处理用户行为日志。
  • 动态设置机器学习模型的训练参数。

CSV 文件与字典的关系

字典是 CSV 文件 的天然伙伴,尤其适合读取和写入结构化数据。CSV 文件是一种常见的结构化数据格式,存储方式类似于电子表格,适合处理大规模的行列数据。而字典是操作结构化数据的理想工具,两者结合可以让数据处理更高效。

1. 使用字典读取 CSV
  • 用途: 将 CSV 文件内容转为字典形式,便于通过键名直接访问数据。
  • 场景: 读取用户反馈,提取特定字段的数据。
  • 方法: Python 提供了 csv.DictReader,可以将 CSV 文件的每一行读取为一个字典,表头作为键,数据作为值。
示例:
import csv

with open("feedback.csv", "r", encoding="utf-8") as file:
    reader = csv.DictReader(file)
    for row in reader:
        print(f"用户 {row['User ID']} 的反馈是:{row['Feedback']}")

2. 使用字典写入 CSV

  • 用途: 将字典中的数据保存为结构化的 CSV 文件。
  • 场景: 导出用户信息、模型训练结果或配置文件。
  • 方法: Python 提供了 csv.DictWriter,可以将字典的数据写入 CSV 文件。

示例:

字典的高级应用场景

1. 配置文件管理
在 AI 系统中,模型参数或实验配置通常以字典形式存储和使用:

config = {
    "learning_rate": 0.001,
    "batch_size": 32,
    "num_epochs": 10
}
print(config["learning_rate"])  # 输出 0.001

2. 统计和计数
使用字典进行数据统计,例如计算每个反馈的出现次数:

feedback = ["Good", "Bad", "Good", "Neutral"]
feedback_count = {}
for f in feedback:
    feedback_count[f] = feedback_count.get(f, 0) + 1
print(feedback_count)  # 输出 {'Good': 2, 'Bad': 1, 'Neutral': 1}

3. 嵌套字典处理复杂数据
AI 项目经常需要存储层级结构数据,例如用户行为:

user_data = {
    "User1": {"Name": "Alice", "Clicks": 10},
    "User2": {"Name": "Bob", "Clicks": 5}
}
print(user_data["User1"]["Clicks"])  # 输出 10

案例:筛选特定用户反馈

任务描述:从用户反馈中,筛选包含关键词 but 的反馈,生成新文件 filtered_feedback.csv

解决方案

import csv

with open("feedback.csv", "r", encoding="utf-8") as infile, open("filtered_feedback.csv", "w", newline="", encoding="utf-8") as outfile:
    reader = csv.DictReader(infile)
    fieldnames = reader.fieldnames  # 获取表头
    writer = csv.DictWriter(outfile, fieldnames=fieldnames)
    writer.writeheader()  # 写入表头

    for row in reader:
        if "but" in row["Feedback"]:
            writer.writerow(row)  # 写入符合条件的行

说明

  • 使用 DictReaderDictWriter 结合处理 CSV 文件。
  • 筛选并保存特定数据。

案例:统计用户反馈关键词

任务描述:统计每个关键词在用户反馈中出现的次数。

解决方案

import csv
from collections import Counter

with open("feedback.csv", "r", encoding="utf-8") as file:
    reader = csv.DictReader(file)
    feedback_list = [row["Feedback"] for row in reader]

# 统计关键词频率
keywords = []
for feedback in feedback_list:
    keywords.extend(feedback.split())  # 分割成单词列表

keyword_count = Counter(keywords)
print("关键词统计:", keyword_count)

说明

  • 如何从字典中提取特定字段的数据。
  • 使用 Counter 类统计关键词频率。

案例:合并多张数据表

任务描述:将 feedback.csvfiltered_feedback.csv 合并到一个新的文件 all_feedback.csv

解决方案

import csv

files = ["feedback.csv", "filtered_feedback.csv"]
output_file = "all_feedback.csv"

# 合并文件
with open(output_file, "w", newline="", encoding="utf-8") as outfile:
    writer = None

    for file_name in files:
        with open(file_name, "r", encoding="utf-8") as infile:
            reader = csv.DictReader(infile)
            
            if writer is None:
                # 初始化写入器,写入表头
                writer = csv.DictWriter(outfile, fieldnames=reader.fieldnames)
                writer.writeheader()

            # 写入数据
            for row in reader:
                writer.writerow(row)

print(f"文件已合并,生成新文件:{output_file}")

说明

  • 动态检测表头并确保文件格式一致。
  • 批量处理多个文件的数据。

练习:

  1. feedback.csv 文件中筛选所有包含 user-friendly 的反馈。
  2. 统计每个用户的反馈字数,生成新文件 feedback_length.csv
  3. 合并 user_data.csvfeedback.csv 文件到一个新的文件中,确保字段对齐。

你可以自己尝试撰写,也可以设计自己的提示词,让大语言模型帮你完成这3个编程任务。试着比较你们写的内容有什么不同。

AI 助教

提示:您可在此提出学习中遇到的问题。回答由 AI 生成,可能存在错误,请注意甄别。