2016-05-25 3 views
-1
私は、次のPythonの辞書、

dict1 = {'fabric_ssh_hosts': ['192.168.3.44 192.168.3.45 192.168.3.46']}Pythonは、次のような出力を生成するために2つの値

がどのように繰り返すことができている

で辞書から繰り返しますか?

192.168.3.44

192.168.3.45

192.168.3.46

+0

を与えています1つの項目を持つリスト、または各アドレスがリストの別々の項目であることを意味したかどうかを確認してください。 –

答えて

0

あなたのコードに何か問題があったと思われます。 なぜすべてのアドレスを1つの文字列に入れて辞書のリストに入れるのですか?

あなたが本当にそのようなことは、場合

dict1 = {'fabric_ssh_hosts': ['192.168.3.44 192.168.3.45 192.168.3.46']} 

addrstring = dict1['fabric_ssh_hosts'][0] 
for addr in addrstring.split(): 
    print(addr) 

を動作するはず書いたものを意味する場合、あなたは私はあなたがやるかと言うためのものだと思う何を意味:

dict1 = {'fabric_ssh_hosts': ['192.168.3.44', '192.168.3.45', '192.168.3.46']} 
for addr in dict1['fabric_ssh_hosts']: 
    print(addr) 

が何であるかをよく見ます辞書thougで違う。

スプリットは、()(したい場合はドキュメントに見て、または他の文字で)空白文字で文字列を分割し、リストに単一の単語を出力します

"foo bar baz".split() 

['foo', 'bar', 'baz'] 
+0

ちょうど@Skylerから少し遅れて答えを見たが、たぶん私の発言はあなたが何が起こっているのか理解するのを助けることができます – cmmnn

+0

答えをありがとう! @cmmnn実際にあなたはコードが難しいと言っているが、あなたはコードを書く!前もって感謝します。 –

+0

私は助けてくれてうれしいです。 1つの文字列を分割することは可能ですが、入力したコードを変更することができれば、私があなたのところにいた場合は変更します。これは、私の意見では、コードをより論理的に拡張しやすくするでしょう。一方、「決して走っているシステムを変えない」というのは、多くの人が行くモットーです。 – cmmnn

4
for host in dict1['fabric_ssh_hosts'][0].split(): 
    print host 

解説:スプリット()引数なしで呼び出されたときに、空白に分割します。 dict1 ['fabric_ssh_hosts']はリストなので、[0]はその最初の(そして唯一の)要素を取得します。つまり、リストが作成され、リストが反復されます。

+0

'dict1 ['fabric_ssh_hosts']'はリストであり文字列ではないので、うまくいくとは思えません。 – Delgan

+0

おっと、それを逃した。 – Skyler

+0

答えをありがとう! @Skyler –

関連する問題