次のように、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 つにアクセスするには、整数インデックスを使用するか、さらにループを使用する必要があります。