簡體   English   中英

在python中循環並行列表

[英]Looping over parallel lists in python

我正在閱讀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]

假設用戶輸入藝術家名稱Logic,我將如何循環並行列表並打印出與藝術家Logic相關的每首歌曲? 如果用戶輸入Logic,則輸出應為:

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

但正如@Carcigenicate所說,有更好的方法可以解決這個問題。 如果您要在這些列表上進行多次搜索,您可能需要首先循環並將數據分組到哈希表或@Carcigenicate建議的內容中。

@RPGillespie的鏈接解釋了如何將它們組合成哈希表,這是一種更好的搜索方式。

Rich打敗了我,但我會發布一個更加pythonic的例子:

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

注意使用zip可以讓你一次性干凈地迭代這兩個列表(不需要下標)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM