#python #nested
Вопрос:
Я новичок в python, так что это может быть слишком простой вопрос, но как я могу преобразовать их во вложенные циклы для в соответственно? — Я застрял из-за фигурных скобок.
[{a['artist'] for a in n['tracks']} for user in users for n in user['playlists']]
{v['party'] for vp in vps for v in vp['positions']}
Ответ №1:
Со временем это станет более интуитивно понятным, но вам просто нужно «развернуть» эти циклы внутри этих списков. Первым из них было бы:
artists = []
for user in users:
for n in user["playlists"]:
for a in n["tracks"]:
artists.append(a["artist"])
И второй:
parties = []
for vp in vps:
for v in vp["positions"]:
parties.append(v["party"])
Обратите внимание, что списки, в которых вы будете хранить самый низкий уровень цикла, а именно «вечеринки» и «артисты», должны быть созданы до начала цикла.
Комментарии:
1. Есть фигурные скобки..
Ответ №2:
Как правило, первая часть понимания-это контент, который будет добавлен/добавлен в результирующий список/набор. Остальное-вложенные циклы в том же порядке, в каком вы написали бы их, используя обычные операторы for-loop.
Первое понимание — это составление списка наборов. Это понимание набора, вложенное в понимание списка:
result = list() # output of comprehension
for user in users: # for user in users ...
for n in user['playlists']: # for n in user['playlists'] ...
tracks = set() # nested set comprehension {...}
for a in n['tracks']: # for a in n['tracks'] ...
tracks.add(a['artist']) # a['artist']
result.append(tracks) # list of the tracks sets
Второй — создание набора:
result = set() # result of comprehension
for vp in vps: # for vp in vps ...
for v in vp['positions']: # for v in vp['positions'] ...
result.add(v['party']) # v['party']