news 2026/6/10 19:49:43

导入自己的听歌记录(歌曲名,歌手,播放次数),统计播放次数最多的歌手,推荐该歌手的其他歌曲。

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
导入自己的听歌记录(歌曲名,歌手,播放次数),统计播放次数最多的歌手,推荐该歌手的其他歌曲。

1. 实际应用场景描述

场景

某音乐爱好者长期使用音乐平台听歌,并导出自己的听歌记录(歌曲名、歌手、播放次数)。他希望:

- 快速找出播放次数最多的歌手

- 自动推荐该歌手的其他热门歌曲

- 优化歌单,发现更多喜欢的音乐

痛点

- 手动统计播放数据耗时

- 难以快速找到最爱歌手的其他作品

- 缺乏自动化推荐,依赖平台算法

2. 核心逻辑讲解

1. 输入:歌曲名、歌手、播放次数(可从CSV/JSON导入)

2. 统计:按歌手汇总总播放次数,找出最高者

3. 推荐:根据预设的热门歌曲库,推荐该歌手的其他歌曲

4. 输出:打印结果和推荐列表

3. 代码模块化设计

我们将代码分为:

-

"data_loader.py":数据加载模块

-

"analysis.py":统计分析模块

-

"recommendation.py":推荐生成模块

-

"main.py":主程序入口

3.1

"data_loader.py"

# data_loader.py

import json

def load_listening_data(file_path="listening_history.json"):

"""

从JSON文件加载听歌记录

格式: [{"song": "歌名", "artist": "歌手", "play_count": 次数}, ...]

"""

try:

with open(file_path, "r", encoding="utf-8") as f:

data = json.load(f)

return data

except FileNotFoundError:

print(f"文件 {file_path} 未找到,使用示例数据")

return [

{"song": "光年之外", "artist": "G.E.M.", "play_count": 50},

{"song": "泡沫", "artist": "G.E.M.", "play_count": 40},

{"song": "演员", "artist": "薛之谦", "play_count": 60},

{"song": "丑八怪", "artist": "薛之谦", "play_count": 55},

{"song": "平凡之路", "artist": "朴树", "play_count": 30}

]

3.2

"analysis.py"

# analysis.py

from collections import defaultdict

def find_top_artist(data):

"""

找出播放次数最多的歌手

:param data: list of dict

:return: tuple (artist_name, total_play_count)

"""

artist_plays = defaultdict(int)

for record in data:

artist_plays[record["artist"]] += record["play_count"]

if not artist_plays:

return None, 0

top_artist = max(artist_plays.items(), key=lambda x: x[1])

return top_artist

3.3

"recommendation.py"

# recommendation.py

# 预设热门歌曲库(实际可从API获取)

HOT_SONGS_DB = {

"G.E.M.": ["来自天堂的魔鬼", "倒数", "新的心跳"],

"薛之谦": ["刚刚好", "绅士", "动物世界"],

"朴树": ["那些花儿", "白桦林", "生如夏花"]

}

def recommend_songs(artist):

"""

根据歌手推荐其他热门歌曲

"""

return HOT_SONGS_DB.get(artist, ["暂无推荐"])

3.4

"main.py"

# main.py

from data_loader import load_listening_data

from analysis import find_top_artist

from recommendation import recommend_songs

def main():

print("=== 听歌记录分析与推荐系统 ===")

# 加载数据

listening_data = load_listening_data()

# 找出播放最多的歌手

top_artist, total_plays = find_top_artist(listening_data)

if top_artist:

print(f"\n🎵 播放次数最多的歌手是: {top_artist},总播放次数: {total_plays}")

# 推荐该歌手的其他歌曲

recommendations = recommend_songs(top_artist)

print(f"\n💡 推荐 {top_artist} 的其他热门歌曲:")

for song in recommendations:

print(f" - {song}")

else:

print("没有找到任何听歌记录")

# 列出所有歌手播放统计

from collections import defaultdict

artist_plays = defaultdict(int)

for record in listening_data:

artist_plays[record["artist"]] += record["play_count"]

print("\n📊 全部歌手播放统计:")

for artist, plays in sorted(artist_plays.items(), key=lambda x: x[1], reverse=True):

print(f"{artist}: {plays} 次")

if __name__ == "__main__":

main()

4. README.md

# 听歌记录分析与推荐系统

## 项目简介

基于Python的音乐播放记录分析工具,帮助你找出最爱歌手并推荐其热门歌曲。

## 功能

- 导入听歌记录(JSON格式)

- 统计播放次数最多的歌手

- 推荐该歌手的其他热门歌曲

- 按播放次数排序展示所有歌手

## 安装与使用

1. 确保已安装 Python 3.7+

2. 准备 `listening_history.json` 数据文件(或使用内置示例数据)

3. 运行 `python main.py`

## 数据格式示例 (listening_history.json)

json

[

{"song": "光年之外", "artist": "G.E.M.", "play_count": 50},

{"song": "演员", "artist": "薛之谦", "play_count": 60}

]

## 模块说明

- `data_loader.py`: 数据加载

- `analysis.py`: 统计分析

- `recommendation.py`: 推荐生成

- `main.py`: 主程序

5. 使用说明

1. 创建

"listening_history.json" 文件,按示例格式填写歌曲、歌手、播放次数

2. 运行:

python main.py

3. 查看控制台输出的统计结果与推荐歌曲

6. 核心知识点卡片

知识点 说明

JSON数据处理 读写结构化数据

defaultdict 高效分组统计

max()与lambda 查找最大值

字典操作 存储与查询推荐歌曲

模块化设计 便于维护与扩展

条件分支推荐 根据数据生成个性化输出

大数据预处理 真实场景可用Pandas处理千万级播放记录

7. 总结

本项目通过模块化Python编程,解决了听歌记录分析的痛点:

- 自动化:一键统计最爱歌手

- 智能化:自动推荐相关歌曲

- 可扩展:可接入音乐平台API实现实时数据获取

未来可结合协同过滤算法或NLP分析歌词情感,实现更精准的个性化推荐,打造真正的个人音乐智能管家。

如果你愿意,可以把这个系统升级成带GUI的桌面应用(Tkinter/PyQt)或者Web版(Flask + Vue.js),并增加歌词情感分析功能,让推荐更符合你的心情。

利用AI高效解决实际问题,如果你觉得这个工具好用,欢迎关注我。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 4:48:30

2026年8款好用的降AI率工具推荐,亲测有效

2026年8款好用的降AI率工具推荐,亲测有效 TL;DR:2026年知网AIGC检测系统升级后,传统的同义词替换已经没用了。我测试了十几款降AI工具,最后筛出8款真正有效的:嘎嘎降AI(性价比高,达标率99.26%&a…

作者头像 李华
网站建设 2026/6/9 23:04:02

手把手教你降论文AI率:从检测到修改的完整操作指南

手把手教你降论文AI率:从检测到修改的完整操作指南 TL;DR:这篇教程带你走完降AI的全流程:检测定位问题 → 工具处理 → 人工精修 → 验证达标。核心工具推荐嘎嘎降AI(达标率99.26%)。全程约1小时,新手也能搞…

作者头像 李华
网站建设 2026/6/10 11:39:54

8.4 智能诊断报告:从影像到文本的跨模态生成

8.4 智能诊断报告:从影像到文本的跨模态生成 在前面的章节中,我们学习了医学影像的处理、病灶检测与分割等关键技术。本章将探讨如何利用这些技术成果,结合自然语言处理技术,自动生成智能诊断报告。这是医学人工智能领域的一个重要应用方向,能够显著提高医生的工作效率,…

作者头像 李华
网站建设 2026/6/10 12:35:30

9.1 分布式训练三剑客:DP、MP、PP并行策略详解

9.1 分布式训练三剑客:DP、MP、PP并行策略详解 在深度学习模型规模不断增大的今天,单个GPU已经无法满足训练大模型的需求。分布式训练技术成为训练大规模模型的必要手段。本章将详细介绍分布式训练中的三种核心并行策略:数据并行(Data Parallelism, DP)、模型并行(Model…

作者头像 李华
网站建设 2026/6/10 12:02:09

毕业季必备5款AIGC检测工具,告别论文被打回的焦虑

毕业季必备5款AIGC检测工具,告别论文被打回的焦虑 TL;DR:2026毕业季AIGC检测已成必过关卡,《学位法》实施后AI写作被列为学术不端。本文推荐5款实测有效的AIGC检测和降AI工具,重点推荐嘎嘎降AI(达标率99.26%&#xff0…

作者头像 李华
网站建设 2026/6/9 21:31:13

技术解析 | 被遗忘权在AI系统中的落地实践:从逻辑隔离到行为矫正

在隐私法规不断收紧的背景下,“被遗忘权”已经从法律文本,逐步变成对AI系统的现实工程要求。对于传统信息系统而言,这个要求相对清晰:找到用户数据,删除或匿名化,完成审计。 但当系统的核心能力来自机器学习模型时,问题开始变得棘手。因为模型并不是简单地“存储”数据…

作者头像 李华