如何访问存储在dict中的元组中的元素?

2024-09-30 04:41:00 发布

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

song_lyrics_per_year={year:[(song, singer, lyrics),(song2, singer2, lyrics2)...], year2: ....}

您好,我有一个dict,其中year是键,value是元组列表(包括歌曲、歌手、歌词)。 不,我需要分别访问所有3个元素并将它们解析为一个列表

onlysongs=[]
onlyartists=[]

然而,到目前为止,我所有的尝试都失败了,包括这里建议的列表理解和代码。你知道吗

这不管用吗?你知道吗

for item in song_lyrics_per_year.values():
    onlyartists.append(item[1])

作为回应,我得到了一个“IndexError:list index out of range”

进入Python仅仅几个星期,我就查阅了关于这个主题的所有旧答案,并尝试了解决方案……不幸的是,它们没有起作用。你知道吗

谢谢你的帮助!你知道吗


Tags: singer列表songvalueitemyeardict元组
3条回答

我觉得你少了一级名单。尝试以下操作:

for songs_in_single_year in song_lyrics_per_year.values():
    for song in songs_in_single_year:
        onlyartists.append(song[1])

我想这样会更清楚:

for year in song_lyrics_per_year:
    for song_lyric in song_lyrics_per_year[year]:
        song, singer, lyrics = song_lyric
        if singer not in onlyartists:
            onlyartists.append(singer)

编辑:记录艺术家出现的频率收款台(). 下面是一个完整的示例:

from collections import Counter

singers = Counter()
years = { 
    2018: [
        ('Title1', 'Singer1', 'Lyrics1'),
        ('Title2', 'Singer1', 'Lyrics2')
    ],
    2019: [
        ('Title3', 'Singer3', 'Lyrics3')
    ]
}

for year in years:
    for song in years[year]:
        title, singer, lyrics = song
        singers.update((singer,))

for singer, hits in singers.most_common():
    print(singer, hits)

下面是输出:

Singer1 2
Singer3 1
for value in song_lyrics_per_year.values():
    for i in range(0,len(value)-1):
        onlysongs.append(value[i][0])
        onlyartists.append(value[i][1])   

谢谢你的编辑@奥斯汀。你知道吗

相关问题 更多 >

    热门问题