2016-10-28 11 views

答えて

1

これは確かに複雑なツリーのようです。クラスでラップする方が良いかもしれません。しかしかかわらず:それは次のように畳み込まれます

print(list(playlists['user'][0].keys())[0])

print(playlists['user'][0]['playlist']['tracks'][0]['name'])

、文字列 "プレイリスト":

例えばプレイリスト内の最初のトラックの名前を取得するにはキーと値の両方が必要です。通常、キーを知っている値を抽出したいので、これは必ずしも物事が必然的に意図されたものではありません。私はこれを編集し、余りにも長くないでこれを行うために少しエレガントな方法を振り返ります。

さて、あなたがPythonでクラスを経験したと仮定すると、ここに例があります。ない場合は、あなたが他の場所でその情報の多くを見つけることができます:ここでは

# Class based example 

class Playlist(object): 
    def __init__(self, name, tracks=[]): 
     self.name = name 
     self.tracks = tracks 

    def GetTrack(self, searchString): 
     for T in self.tracks: 
      if searchString in T.name: 
       return T 
     else: 
      return None 

    def AddTrack(self, track): 
     if isinstance(track, Track): 
      self.tracks.append(Track) 
     else: 
      pass # Or do some exception handling 

class Track(object): 
    def __init__(self, name, artist, count): 
     self.name = name 
     self.artist = artist 
     self.count = count 

    def Play(self): 
     pass # Could in theory add some play functionality 


# Now you would create a new playlist by going: 
MyPlaylist = Playlist("Heavy Metal") 

MyPlaylist.AddTrack("SomeSong", "SomeArtist", 1) # etc 

# Or 

Countrysongs = [Track("SongName", "ArtistName", 12), Track("Bobby", "The Artist", 2)] 

AnotherPlaylist = Playlist("Country", Countrysongs) 


# And to access the Playlist name or the Song Name 
MyPlaylist.GetTrack("SongName") 

# And exception handle it 
SongToGet = AnotherPlaylist.GetTrack("Sasdjkl") 

if not SongToGet: 
    print ("Could not find song") 

は、より大きなライブラリーを構築することが少し楽になり一例です。情報を取得するのが簡単かつ迅速で、巨大な辞書よりも保守が簡単です!

0

また、以下のようにiteritemsメソッドを使用してkey/valueペアにアクセスすることもできます。そして、以下のように印刷するのではなく、あなたの行動を実行することができます。

In [14]: user1 = playlists.get('user')[0] 

In [15]: for key, value in user1.iteritems(): 
    ....:  print key 
    ....:  print value 
    ....:  
playlist 
{'tracks': [{'count': '1.0', 'name': 'Karma Police', 'artist': 'Radiohead'}, {'count': '2.0', 'name': 'Bitter Sweet Symphony', 'artist': 'The Verve'}]} 
関連する問題