2017-11-03 10 views
0

私はコンソールで次の手順を試したのpython 3 でcollections.defaultdictを使用しようとしています:defaultdictリストではなくリストのリストを追加しますか?

>>> from collections import defaultdict 
>>> l = [1,2,3,4,5] 
>>> dd = defaultdict(list) 
>>> dd["one"].append(l) 
>>> print(dd) 
defaultdict(<class 'list'>, {'one': [[1, 2, 3, 4, 5]]}) 

ように、私はそのを読み取るために、ループのための2つを必要とするので、あなたは、リストのその追加[[1, 2, 3, 4, 5]]すなわちリストを見ることができます変数。

なぜ[1, 2, 3, 4, 5]のようなものが追加されていないのですか?

実装に問題がありますか、またはdefaultdictの仕組みを理解していますか? ありがとうございました

+2

'append'は、あなたがリストにして渡しているオブジェクトを追加し、私はあなたが' extend' –

+0

おかげ@RNarを使用することにしたいと考え、それが働きました。 あなたはあなたのコメントを答えに入れることができます私はそれをupvoteします – User2403

答えて

3

defaultdictがどのように動作するか理解していますか?

全くありません。あなたのコードは、期待どおりに動作します。空のリストのデフォルト値が作成され、.appendのリストにある単一の要素が[1, 2, 3, 4, 5]になりました。実際には、これは実際にdefaultdictには全く関係しません。リストにはリストが含まれていても問題ありません。リストを別のリストに登録することは、特別な操作ではありません。 1'helloのような要素を追加するのと同じです。 全体リスト.append edは単一要素と考えられます。

あなたはあなたのリストに要素反復可能なのを追加したい場合は、代わりにlist.extendを使用する必要があります。

が反復可能で、すべての項目を追加することによって、リストを拡張します。 a[len(a):] = iterableと等価です。

dd["one"].extend(l) 
関連する問題