2016-05-25 107 views
-1

我有以下Python字典,Python从字典迭代有两个值

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

我怎么能循环,产生以下输出?

192.168.3.44

192.168.3.45

192.168.3.46

+0

是一个单一的项目列表或你的意思是每个地址是一个单独的项目在列表 –

回答

0

我怀疑你的代码出了问题。 你为什么要把所有的地址放在一个字符串中,然后把它放到字典里面的列表中?

如果你真正的意思你写这样的事情应该工作

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) 

外观在字典里不同。

分裂()处分割空白字符(或其他字符,如果你想,看看文档)的字符串和单个单词输出到一个列表:

"foo bar baz".split() 

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

刚刚看到@Skyler的答案有点晚了,但也许我的言论可以帮助您了解发生了什么 – cmmnn

+0

感谢您的答案!实际上,正如你所说的代码是棘手的,但你的代码作品!提前致谢。 –

+0

很高兴我能够提供帮助。分割一个字符串是可能的,但如果你从一段代码中得到输入,你可以改变,如果我在你的位置,我会改变它。在我看来,这会使代码更合乎逻辑,更容易扩展。另一方面,“永不改变跑步系统”是许多人选择走过的座右铭。 – 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 –