python API(gmusicapi)将播放列表存储为一个词典列表,其中轨道信息作为该词典中的词典。
-edit-这是错的。它在打印时确实有某种键,但是我无法找到如何访问dict中的键。
list = [
{ ##this dict isn't a problem, I can loop through the list and access this.
'playlistId': '0xH6NMfw94',
'name': 'my playlist!',
{'trackId': '02985fhao','album': 'pooooop'}, #this dict is a problem because it has no key name. I need it for track info
'owner': 'Bob'
},
{ ##this dict isn't a problem, I can loop through the list and access this.
'playlistId': '2xHfwucnw77',
'name': 'Workout',
'track':{'trackId': '0uiwaf','album': 'ROOOCKKK'}, #this dict would probably work
'owner': 'Bob'
}
]
我尝试过使用for循环并通过以下方式访问它:
def playLists(self):
print 'attempting to retrieve playlist song info.'
playListTemp = api.get_all_user_playlist_contents()
for x in range(len(playListTemp)):
tempdictionary = dict(playListTemp[x])
这里的问题是tempdictionary有一个叫做曲目的词典,但无论我做什么,我似乎无法访问其中的键/值对。
打印时返回如下内容:
[u'kind', u'name', u'deleted', u'creationTimestamp', u'lastModifiedTimestamp', u'recentTimestamp', u'shareToken', 'tracks', u'ownerProfilePhotoUrl', u'ownerName', u'accessControlled', u'type', u'id', u'description']
其中'跟踪'是一个包含艺术家,标题,轨道号等的词典
我也尝试过这样的事情:
tempdictionary ['轨道'] [X] ['标题'] 没有运气。其他时候我尝试创建一个新的字典与轨道字典作为一个velue但然后我得到一个错误说它需要值2,它发现像11等。
我是python的新手,所以如果有人在这里可以提供帮助,我会非常感激
答案 0 :(得分:3)
打印时确实有某种键,但我无法找到如何访问dict中的键。
迭代dict:
for key in dct:
print(key)
# or do any number of other things with key
如果您还要查看字典值,请使用.items()
为自己保存字典查找:
for key, value in dct.items():
print(key)
print(value)
答案 1 :(得分:1)
您可以考虑使用类来封装常见特征。目前,您的每个曲目和播放列表词典都有很多重复的代码(即“track_id =”,“owner =”Bob“)。使用类可以减少重复并使您的意义更加明显和明确。
class AudioTrack(object):
def __init__(self, ID, album=None):
self.id = ID
self.album = album
self.owner = 'Bob'
创建一个像这样的AudioTrack对象:
your_first_track = AudioTrack('02985fhao', 'pooooop')
或者创建一个AudioTrack对象列表,如下所示:
your_tracks = [
AudioTrack("0x1", album="Rubber Soul"),
AudioTrack("0x2", album="Kind of Blue"),
...
]
通过这种方式,您可以检查每个AudioTrack对象:
your_first_track.id #Returns '02985fhao'
或者为your_tracks中的所有AudioTrack对象执行某些操作:
#Prints the album of every track in the list of AudioTrack intances
for track in your_tracks:
print track.album
您可以使用以下字典制作播放列表:
my_playlist = {
id: "0x1",
name: "my playlist",
tracks: [AudioTrack("0x1", album="Rubber Soul"),
AudioTrack("0x2", album="Kind of Blue")]
}