1

ここにサンプルdict oneがあります

one = {'a': 1,'b': 3}

そして2番目の口述は

second = {'x': 45,'y': 45}

これがキーコンテナです(タイプlist

key_con = one.keys()
key_con = key_con.extend(second.keys())

そしてすべてうまくいきます。しかし、私はこのようにコードを短くしようとします

key_con = one.keys().extend(second.keys())

さて、 このキー コンテナを 1 行のコードで作成したいと思いますかkey_conNoneTypeそれを達成する方法は?

4

2 に答える 2

5
key_con = one.keys() + second.keys()

extendリストをインプレースで変更し、何も返しません。最初のスニペットが機能してもよろしいですか?

于 2013-01-18T12:31:18.823 に答える
1

Pavel Anossovによる他の回答は、あなたが明示的に尋ねた質問に答えましたが、それは目前の問題に対する最善の解決策ではないと主張します. 辞書は順不同であり、重複するキーを持つことはできないため、リストを使用してキーを格納することは本質的に誤解を招きやすく、悪い考えです。

代わりに、このデータをセットに格納することをお勧めします。セットには順序がなく、重複を含めることができないため、この役割をより効果的に果たします。

Python 3.x ではdict.keys()セットのような辞書ビューを提供するため、これは次のように行うのが最適です。

key_con = one.keys() | two.keys()

(binary or) 演算子を使用します|。これは、セットおよびセットのようなオブジェクトで、和集合(いずれのセット内のすべての要素) を通知します。

2.7 では、以下を使用して同じ動作を得ることができますdict.viewkeys()

key_con = one.viewkeys() | two.viewkeys()

古いバージョンでは、次のように使用できdict.iterkeys()ますset()

key_con = set(one.iterkeys()) | set(two.iterkeys())
于 2013-01-18T12:58:27.420 に答える