辞書理解における複数のキーと値のペア 質問する

辞書理解における複数のキーと値のペア 質問する

次のように、dict の理解で複数のキー:値のペアを作成しようとしています。

{'ID': (e[0]), 'post_author': (e[1]) for e in wp_users}

私は受け取っています"missing ','"

私は次のようにも試しました:

[{'ID': (e[0]), 'post_author': (e[1])} for e in wp_users]

私はその後"list indices must be integers, not str"

理解はしていますが、これを修正する最善の方法がわかりません。また、dict の理解で複数のキーと値のペアが可能かどうかもわかりません。

ベストアンサー1

辞書の理解では、1つ反復ごとにキーと値のペアが生成されます。この場合の秘訣は、ペアを分離するための追加のループを生成することです。

{k: v for e in wp_users for k, v in zip(('ID', 'post_author'), e)}

これは次と同等です:

result = {}
for e in wp_users:
    for k, v in zip(('ID', 'post_author'), e):
        result[k] = v

これはリストのそれぞれのキーを 2 つ繰り返すだけなのでwp_users、同じキーを新しい値に継続的に置き換えていることに注意してください。その場合は、最後のエントリを取得することもできます。

result = dict(zip(('ID', 'post_author'), wp_users[-1]))

どのような成果を出したか共有しなかった期待されるしかし。

wp_usersそれぞれ 2 つのキーを持つ辞書のリストを作成する場合は、各エントリに上記の式のリスト理解を適用する必要があります。

result = [dict(zip(('ID', 'post_author'), e)) for e in wp_users]

これは、あなた自身の2回目の試みと同じ出力を生成しますが、今度はリスト辞書の。辞書オブジェクトの 1 つにアクセスするには、整数インデックスを使用するか、さらにループを使用する必要があります。

おすすめ記事