Python创建循环遍历嵌套lis的字典列表

2024-09-29 23:23:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一份清单:

music = [[u'Charles Bradley', u'Heart of Gold'], [u'Charles Bradley', u'Stay Away'], [u'Iron & Wine', u'Pagan Angel And A Borrowed Car'], [u'Iron & Wine', u'White Tooth Man'], [u'Iron & Wine', u'Lovesong of the Buzzard'], [u'Iron & Wine', u'Carousel'], [u'Iron & Wine', u'House By The Sea'], [u'Iron & Wine', u'Innocent Bones'], [u'Iron & Wine', u"Wolves (Song of the Shepherd's Dog)"], [u'Iron & Wine', u'Resurrection Fern'], [u'Iron & Wine', u'Boy With a Coin'], [u'Iron & Wine', u'The Devil Never Sleeps'], [u'Iron & Wine', u'Peace Beneath The City'], [u'Iron & Wine', u'Flightless Bird, American Mouth'], [u'Animal Collective', u'In the Flowers'], [u'Animal Collective', u'My Girls'], [u'Animal Collective', u'Also Frightened'], [u'Animal Collective', u'Summertime Clothes'], [u'Animal Collective', u'Daily Routine'], [u'Animal Collective', u'Bluish'], [u'Animal Collective', u'Guys Eyes'], [u'Animal Collective', u'Taste'], [u'Animal Collective', u'Lion in a Coma'], [u'Animal Collective', u'No More Runnin'], [u'Animal Collective', u'Brother Sport'], [u'Richard Hawley', u'I Still Want You'], [u'Richard Hawley', u'The World Looks Down'], [u'Richard Hawley', u'Which Way'], [u'Richard Hawley', u'Serenade Of Blue'], [u'Richard Hawley', u'Long Time Down'], [u'Richard Hawley', u'Nothing Like A Friend'], [u'Richard Hawley', u'Sometimes I Feel'], [u'Richard Hawley', u'Tuesday pm'], [u'Richard Hawley', u'Welcome The Sun'], [u'Richard Hawley', u'Heart Of Oak'], [u'Richard Hawley', u'What Love Means'], [u'Suuns', u'Powers of Ten'], [u'Suuns', u'2020'], [u'Suuns', u'Minor Work'], [u'Suuns', u'Mirror Mirror'], [u'Suuns', u"Edie's Dream"], [u'Suuns', u'Sunspot'], [u'Suuns', u'Bambi'], [u'Suuns', u'Holocene City'], [u'Suuns', u'Images du Futur'], [u'Suuns', u"Music Won't Save You"], [u'Deerhunter', u'Earthquake'], [u'Deerhunter', u'Don\u2019t Cry'], [u'Deerhunter', u'Revival'], [u'Deerhunter', u'Sailing'], [u'Deerhunter', u'Memory Boy'], [u'Deerhunter', u'Desire Lines'], [u'Deerhunter', u'Basement Scene'], [u'Deerhunter', u'Helicopter'], [u'Deerhunter', u'Fountain Stairs'], [u'Deerhunter', u'Coronado'], [u'Deerhunter', u'He Would Have Laughed'], [u'Animal Collective', u'FloriDada'], [u'Animal Collective', u'Hocus Pocus'], [u'Animal Collective', u'Vertical'], [u'Animal Collective', u'Lying in the Grass'], [u'Animal Collective', u'The Burglars'], [u'Animal Collective', u'Natural Selection'], [u'Animal Collective', u'Bagels in Kiev'], [u'Animal Collective', u'On Delay'], [u'Animal Collective', u'Spilling Guts'], [u'Animal Collective', u'Summing the Wretch'], [u'Animal Collective', u'Golden Gal'], [u'Animal Collective', u'Recycling'], [u'Elvis Costello & The Attractions', u'Uncomplicated'], [u'Elvis Costello & The Attractions', u"I Hope You're Happy Now"], [u'Elvis Costello & The Attractions', u'Tokyo Storm Warning'], [u'Elvis Costello & The Attractions', u'Home Is Anywhere You Hang Your Head'], [u'Elvis Costello & The Attractions', u'I Want You'], [u'Elvis Costello & The Attractions', u'Honey Are You Straight Or Are You Blind'], [u'Elvis Costello & The Attractions', u'Blue Chair'], [u'Elvis Costello & The Attractions', u'Battered Old Bird'], [u'Elvis Costello & The Attractions', u'Crimes Of Paris'], [u'Elvis Costello & The Attractions', u'Poor Napoleon'], [u'Elvis Costello & The Attractions', u'Next Time Round']]

最后我想用一个字典列表来结束,其中每个唯一的艺术家都是key,它的曲目列表是value,如下所示:

^{pr2}$

为此,我已经走了这么远:

artists = set()
dicts=[]

for item in music:
    artists.add(item[0])
    for artist in artists:
        if artist in item:
            dicts[artist]=item[1]

这显然还不够,因为我得到:

{u'Suuns': u"Music Won't Save You", u'Animal Collective': u'Recycling', u'Iron & Wine': u'Flightless Bird, American Mouth', u'Deerhunter': u'He Would Have Laughed', u'Charles Bradley': u'Stay Away', u'Elvis Costello & The Attractions': u'Next Time Round', u'Richard Hawley': u'What Love Means'}

任何帮助都将不胜感激。在


Tags: theinyourichardcollectiveironelviswine
3条回答

没有defaultdict的替代方案:

dicts = {}

for key, value in music:
    if key not in dicts:
        dicts[key] = []
    dicts[key].append(value) 

{123aj4}你可以用这个方法。在

from collections import defaultdict

d = defaultdict(list)
songs = [[u'Charles Bradley', u'Heart of Gold'], [u'Charles Bradley', u'Stay Away'], [u'Iron & Wine', u'Pagan Angel And A Borrowed Car'], [u'Iron & Wine', u'White Tooth Man'], [u'Iron & Wine', u'Lovesong of the Buzzard'], [u'Iron & Wine', u'Carousel'], [u'Iron & Wine', u'House By The Sea'], [u'Iron & Wine', u'Innocent Bones'], [u'Iron & Wine', u"Wolves (Song of the Shepherd's Dog)"], [u'Iron & Wine', u'Resurrection Fern'], [u'Iron & Wine', u'Boy With a Coin'], [u'Iron & Wine', u'The Devil Never Sleeps'], [u'Iron & Wine', u'Peace Beneath The City'], [u'Iron & Wine', u'Flightless Bird, American Mouth'], [u'Animal Collective', u'In the Flowers'], [u'Animal Collective', u'My Girls'], [u'Animal Collective', u'Also Frightened'], [u'Animal Collective', u'Summertime Clothes'], [u'Animal Collective', u'Daily Routine'], [u'Animal Collective', u'Bluish'], [u'Animal Collective', u'Guys Eyes'], [u'Animal Collective', u'Taste'], [u'Animal Collective', u'Lion in a Coma'], [u'Animal Collective', u'No More Runnin'], [u'Animal Collective', u'Brother Sport'], [u'Richard Hawley', u'I Still Want You'], [u'Richard Hawley', u'The World Looks Down'], [u'Richard Hawley', u'Which Way'], [u'Richard Hawley', u'Serenade Of Blue'], [u'Richard Hawley', u'Long Time Down'], [u'Richard Hawley', u'Nothing Like A Friend'], [u'Richard Hawley', u'Sometimes I Feel'], [u'Richard Hawley', u'Tuesday pm'], [u'Richard Hawley', u'Welcome The Sun'], [u'Richard Hawley', u'Heart Of Oak'], [u'Richard Hawley', u'What Love Means'], [u'Suuns', u'Powers of Ten'], [u'Suuns', u'2020'], [u'Suuns', u'Minor Work'], [u'Suuns', u'Mirror Mirror'], [u'Suuns', u"Edie's Dream"], [u'Suuns', u'Sunspot'], [u'Suuns', u'Bambi'], [u'Suuns', u'Holocene City'], [u'Suuns', u'Images du Futur'], [u'Suuns', u"Music Won't Save You"], [u'Deerhunter', u'Earthquake'], [u'Deerhunter', u'Don\u2019t Cry'], [u'Deerhunter', u'Revival'], [u'Deerhunter', u'Sailing'], [u'Deerhunter', u'Memory Boy'], [u'Deerhunter', u'Desire Lines'], [u'Deerhunter', u'Basement Scene'], [u'Deerhunter', u'Helicopter'], [u'Deerhunter', u'Fountain Stairs'], [u'Deerhunter', u'Coronado'], [u'Deerhunter', u'He Would Have Laughed'], [u'Animal Collective', u'FloriDada'], [u'Animal Collective', u'Hocus Pocus'], [u'Animal Collective', u'Vertical'], [u'Animal Collective', u'Lying in the Grass'], [u'Animal Collective', u'The Burglars'], [u'Animal Collective', u'Natural Selection'], [u'Animal Collective', u'Bagels in Kiev'], [u'Animal Collective', u'On Delay'], [u'Animal Collective', u'Spilling Guts'], [u'Animal Collective', u'Summing the Wretch'], [u'Animal Collective', u'Golden Gal'], [u'Animal Collective', u'Recycling'], [u'Elvis Costello & The Attractions', u'Uncomplicated'], [u'Elvis Costello & The Attractions', u"I Hope You're Happy Now"], [u'Elvis Costello & The Attractions', u'Tokyo Storm Warning'], [u'Elvis Costello & The Attractions', u'Home Is Anywhere You Hang Your Head'], [u'Elvis Costello & The Attractions', u'I Want You'], [u'Elvis Costello & The Attractions', u'Honey Are You Straight Or Are You Blind'], [u'Elvis Costello & The Attractions', u'Blue Chair'], [u'Elvis Costello & The Attractions', u'Battered Old Bird'], [u'Elvis Costello & The Attractions', u'Crimes Of Paris'], [u'Elvis Costello & The Attractions', u'Poor Napoleon'], [u'Elvis Costello & The Attractions', u'Next Time Round']]
for artist, title  in songs:
    d[artist].append(title)

print(d)

您可以使用defaultdict

from collections import defaultdict

d = defaultdict(list)

for artist, song in music:
   d[artist].append(song)

full_list = [{a:b} for a, b in d.items()]

输出:

^{pr2}$

相关问题 更多 >

    热门问题