news 2026/3/22 23:37:18

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

作者头像

张小明

前端开发工程师

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/3/18 8:49:10

保姆级教程:3分钟用嘎嘎降AI把论文AI率从60%降到10%以下

保姆级教程:3分钟用嘎嘎降AI把论文AI率从60%降到10%以下 TL;DR:本文手把手教你使用嘎嘎降AI降低论文AI率,全程只需3分钟。核心步骤:打开官网→粘贴内容→点击处理→复制结果→检测确认。实测效果:AI率60%以上可降至10%…

作者头像 李华
网站建设 2026/3/17 3:57:51

人工智能应用-机器视觉:绘画大师 02.​​​​​​​​​​​​​​深度神经网络中的内容与风格

深度神经网络中的内容与风格德国图宾根大学的研究者发现,一个用于图像识别的深度卷积神经网络,能够将图片的“内容”和“风格”分离开来。他们通过观察发现,在网络的较深层次,神经元的激发值可以还原图片中的物体,但会…

作者头像 李华
网站建设 2026/3/15 19:39:11

论文AI率太高被退回?5招教你快速解决

论文AI率太高被退回?5招教你快速解决 TL;DR:论文被退回说AI率太高,别慌!这篇文章教你5招快速解决:了解AI率高的真正原因、避开3个常见误区、3个有效的手动修改技巧、借助专业工具快速降AI、最后再做一轮检查。按这个流…

作者头像 李华
网站建设 2026/3/22 23:34:44

互联网大厂Java求职面试实战:从核心Java到AI技术的全栈问答

互联网大厂Java求职面试实战:从核心Java到AI技术的全栈问答 场景背景 在国内某著名互联网大厂的Java开发岗位面试中,面试官严肃专业,求职者谢飞机则是个搞笑的水货程序员。面试内容涵盖Java核心语言、Spring生态、数据库、微服务、云原生、安…

作者头像 李华