電子書籍の厳選無料作品が豊富!

aaa , bbb = {"1":"犬","2":"猫"}

上記で左辺に辞書を代入したとします。

print(aaa)
print(bbb)

次に上記で出力するとキーである1と2が表示されます。

print(aaa["1"])
print(bbb["2"])

そして上記はエラーになります。

最初の多重代入で左辺はキーしか取得できないのでしょうか。

A 回答 (4件)

No1ですが、ぼーっとしてました。



x = {"1":"犬","2":"猫"}
aaa,bbb = [ dict([[k,x[k]]]) for k in x ]
は、
aaa,bbb = [ {k: x[k]} for k in x ]
でいいですね。

aaa,bbb = [ {k: v} for k,v in x.items() ]
でもいいです。
    • good
    • 0
この回答へのお礼

返事が遅くなりました。仕事の都合で時間が取れず勉強進まないためいまだお書きいただいたことが理解できていません。これからも頑張ります。ありがとうございました。

お礼日時:2020/08/25 21:09

辞書型のシーケンスのアンパックはキーだけがとり出されるので


aaa、bbbに入るのはキーだけです。
    • good
    • 0
この回答へのお礼

辞書型の連続データの分解代入はキーだけになるのですね

お礼日時:2020/06/18 21:06

keyとvalueを個々に取得したい場合は


aaa, bbb = {"1":"犬","2":"猫"}.items()などとしてタプルに変換する必要があります
    • good
    • 0
この回答へのお礼

itemsメソッドでタプルに変換できるのですね。ありがとうございます。

お礼日時:2020/06/18 21:07

dictのリファレンスによると、


> iter(d)
> 辞書のキーに渡るイテレータを返します。これは iter(d.keys()) へのショートカットです。
ということで、dictを右辺にした多重代入はキーの多重代入になります。

aaa, bbb = {"1":"犬","2":"猫"}.items()
で、aaa = ("1","犬") 、bbb = ("2", "猫")
には出来ます。dictにしたければ、

x = {"1":"犬","2":"猫"}
aaa,bbb = [ dict([[k,x[k]]]) for k in x ]
みたいなことが必要じゃないでしょうか。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!