set型の文法について教えてほしい
解決したいこと
今学習しているpaizaの問題で、初めて見る文法が出てきたので教えて頂きたいです。
roster = {x: y for x, y in [input().split() for _ in range(N)]}
set型は分かるのですか、最初の部分のx: yがどのような意味で書かれているのか教えて頂きたいです。
他の部分は理解できます。
補足ですが、paizaのスキルチェックの問題では無いので、規約違反には当たらないです。
問題文も掲載します。
3xxx年、ロボット学校の先生である paiza 君は、新しく担当するクラスの生徒一人一人の出席番号と識別 ID を覚えて、出席番号が与えられたら、その生徒の識別 ID を言えるようになる必要があります。
paiza 君の務める学校は転校が多く、頻繁に生徒が増減します。
覚えるべき生徒の出席番号と識別 ID が与えられたのち、いくつかのイベントを表す文字列が与えられるので、与えられた順に各イベントに応じて次のような処理をおこなってください。
・join num id
生徒番号 num , 識別ID id の生徒を新たに覚える
・leave num
生徒番号 num の生徒を忘れる
・call num
生徒番号 num の生徒の識別 ID を出力する
発生している問題・エラー
エラーメッセージはありません
該当するソースコード
N, K = map(int, input().split())
roster = {x: y for x, y in [input().split() for _ in range(N)]}
for _ in range(K):
s = input().split()
if s[0] == "join":
num, ID = s[1:]
roster[num] = ID
elif s[0] == "leave":
num = s[1]
del roster[num]
else:
num = s[1]
print(roster[num])
自分で試したこと
インターネットで文法について調べてみましたが、該当する記事が見つかりませんでした。