List python中的并行列表循环

List python中的并行列表循环,list,for-loop,python-3.2,List,For Loop,Python 3.2,我正在读一个itunes库文件。我把艺术家的名字和歌曲放在平行的列表中,一个包含艺术家的名字,另一个包含艺术家的歌曲。我只想使用列表来实现这一点 artist_choice = input("Enter artist name: ") artist_names = [Logic, Kanye West, Lowkey, Logic, Logic] artist_songs = [Underpressure, Stronger, Soundtrack to the struggle, Ballin

我正在读一个itunes库文件。我把艺术家的名字和歌曲放在平行的列表中,一个包含艺术家的名字,另一个包含艺术家的歌曲。我只想使用列表来实现这一点

artist_choice = input("Enter artist name: ")
artist_names = [Logic, Kanye West, Lowkey, Logic, Logic]
artist_songs = [Underpressure, Stronger, Soundtrack to the struggle, Ballin, Im the man]
假设用户输入艺人名称逻辑,我如何循环通过并行列表并打印出与艺人逻辑相关的每首歌曲?如果用户输入逻辑,则输出应为:

Underpressure
Ballin
Im the man

这是关于如何做的sudo代码,实际上我对python知之甚少

results = [];
for (i=0;i<artist_names.length();i++):         1
    if artist_names[i] == artist_choice:
        results.push(artist_songs[i])
results=[];

因为(i=0;iRich比我快,但我将发布一个更具python风格的示例:

def getSongs(listOfArtists,listOfSongs,artistToLookup):
    songs = []
    for artist,song in zip(listOfArtists,listOfSongs):
        if (artist == artistToLookup):
            songs.append(song)
    return songs

注意:使用
zip
可以非常干净地一次迭代两个列表(无需下标).

我会搜索所有逻辑索引,然后使用这些索引值来查找结果,只需搜索一个数组,而不是同时搜索两个数组。如果将列表压缩在一起,可以同时对它们进行迭代。然后,您可以使用谓词设置打印内容。不过,我会重新组织存储内容的方式。Wh关于将信息存储在元组中,如
(艺术家姓名,[艺术家歌曲])
。然后,您可以存储这些元组的列表,然后进入艺术家的元组以获取他们的歌曲。如果您添加的字段多于歌曲,我会创建一个类来存储数据。@richgreen我如何找到每次逻辑出现的索引位置?我想如何只对第一次出现的进行索引EW。您是*。我讨厌这样你的答案更好,你的答案可以解释为:)我不知道蟒蛇。我一直讨厌订阅,所以我喜欢tupling方法。