【问题标题】:Python beginner has some problems with the spotipy search functionPython初学者对spotipy搜索功能有一些问题
【发布时间】:2020-03-03 16:59:21
【问题描述】:

我正在尝试设置一个应该执行以下操作的基本工具: 1. 在 Spotify 中搜索音乐家 2. 以我可以使用它们的方式打印结果(例如在窗口中显示输出或类似的东西)

不幸的是,我无法解决以下问题:

import spotipy
import sys
from spotipy.oauth2 import SpotifyClientCredentials


client_credentials_manager = SpotifyClientCredentials(client_id='',
                                                           client_secret='')


spotify = spotipy.Spotify(client_credentials_manager=client_credentials_manager)


result = spotify.search(q='Korn', limit=5)

for i, t in enumerate(result['tracks']['items']):     # way i dont understand
        print (' ', i, t['name'])


print(result)       #way i would like to do it

代码可以以这种枚举方式打印列表,但不能正常打印。问题是我不明白 enumerate 这样做的方式。 有人可以给我一些见解,搜索功能和枚举是如何工作的,也许可以向我展示一个优雅的解决方案,以便我可以打印这个列表?

【问题讨论】:

    标签: python-3.x spotipy


    【解决方案1】:

    我不了解 spotipy 模块,因此我必须根据您所说的有效或无效来假设一些事情。

    所以...您的名为“结果”的变量似乎表现得像字典。你可以用键('tracks','items')来索引它,(如图所示:result['tracks']['items']),这似乎给你返回的东西就像一个列表,其中包含像字典一样的东西,除其他外things 包含键“名称”(如图所示:t['name'])。

    为了说明enumerate 的工作原理,下面是一个示例:

    >>> hello = ['h', 'e', 'l', 'l', 'o']
    >>> print(list(enumerate(hello)))
    [(0, 'h'), (1, 'e'), (2, 'l'), (3, 'l'), (4, 'o')]
    

    它本质上为您返回列表中每个索引的元组,以及该索引处的内容。

    另请注意,Python 有一个称为“duck-typing”的原理。它说:“如果它长得像鸭子,叫起来像鸭子,那它一定是鸭子。”这就是为什么我不太担心对象是什么类型,我关心的是它的行为。

    现在,当你说这样的话:

    for index, element in enumerate(elements):
    

    您正在使用所谓的拆包。它可以让您将enumerate 提供给您的元组分成两个变量。

    如果我们只想简单地做print(result),让你实例化结果的类需要实现__repr____str__ 方法。在其中,您将拥有 for 循环中包含的所有逻辑,在类字典对象中的适当键处获取数据并返回格式正确的字符串。但看起来这个类来自外部库,所以我不确定自己实现这些是个好主意(我还没有这样做的经验)。

    希望我的解释至少有点帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-06
      • 2019-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多