首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何访问存储在dict中的元组中的元素?

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

Stack Overflow用户
提问于 2018-06-02 23:54:55
回答 3查看 353关注 0票数 0
song_lyrics_per_year={year:[(song, singer, lyrics),(song2, singer2, lyrics2)...], year2: ....}

你好,我有一个字典,以年份为关键字,元组(由歌曲,歌手,歌词组成)的值列表。否,我需要分别访问所有3个元素,并将它们解析为一个列表

onlysongs=[]
onlyartists=[]

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

这不应该起作用吗?

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

作为响应,我得到一个"IndexError: list index out of range“

不幸的是,仅仅几周的时间,我就浏览了所有关于这个话题的旧答案,并尝试了solutions...they不起作用。

谢谢你的帮忙!

EN

回答 3

Stack Overflow用户

发布于 2018-06-03 00:01:13

我认为你遗漏了1级列表。尝试如下所示:

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

Stack Overflow用户

发布于 2018-06-03 00:03:04

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])   

感谢编辑@Austin。

票数 0
EN

Stack Overflow用户

发布于 2018-06-03 00:07:36

我想这样会更清楚:

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)

编辑:要跟踪艺术家出现的频率,可以使用collections.Counter()。下面是一个完整的示例:

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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50658641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档