Python - 合并嵌套的词典

时间:2016-10-31 19:54:03

标签: python dictionary

我有这个数据结构:

playlists_user1={'user1':[
               {'playlist1':{
                    'tracks': [        
                    {'name': 'Karma Police','artist': 'Radiohead', 'count': 1.0},
                    {'name': 'Bitter Sweet Symphony','artist': 'The Verve','count': 2.0}                    
                     ]
                    }
               },
               {'playlist2':{
                    'tracks': [        
                    {'name': 'We Will Rock You','artist': 'Queen', 'count': 3.0},
                    {'name': 'Roxanne','artist': 'Police','count': 5.0}                    
                     ]
                  }
                },
              ]
            }


playlists_user2={'user2':[
               {'playlist1':{
                    'tracks': [        
                    {'name': 'Karma Police','artist': 'Radiohead', 'count': 2.0},
                    {'name': 'Sonnet','artist': 'The Verve','count': 4.0}                    
                     ]
                    }
               },
               {'playlist2':{
                    'tracks': [        
                    {'name': 'We Are The Champions','artist': 'Queen', 'count': 4.0},
                    {'name': 'Bitter Sweet Symphony','artist': 'The Verve','count': 1.0}                    
                     ]
                  }
                },
              ]
            }

我想将两个嵌套的词典合并为一个数据结构,其第一个item将是playlist key,如下所示:

{'playlist1': {'tracks': [{'count': 1.0, 'name': 'Karma Police', 'artist': 'Radiohead'}, {'count': 2.0, 'name': 'Bitter Sweet Symphony', 'artist': 'The Verve'}]}}

我试过了:

prefs1 = playlists_user1['user1'][0]
prefs2 = playlists_user2['user2'][0]
prefs3 = prefs1.update(prefs2)

无济于事。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

由于您的播放列表值已经是一个带有一个键的词典列表(如果您问我,有点混淆):

combined = {}
for playlist in playlists_user1.values()[0]:
     combined.update(playlist)
for playlist in playlists_user2.values()[0]:
     combined.update(playlist)

或者如果你有很多这样的话,请列出一下并且:

combined = {}
for playlistlist in user_playlists:
    for playlist in playlistlist.values()[0]:
        combined.update(playlist)
相关问题