Python - 是否可以在列表中包含字典?

时间:2015-07-09 15:24:03

标签: python dictionary

我是用Python编写脚本的新手,但我知道你可以在字典里面有一个列表,但是你可以在列表中有一个字典吗?

我的例子是我试图在linux服务器列表上执行脚本。我这样做了一个字典(由于显而易见的原因,细节被阻止):

list1 = {
'IP_' : '@IPADDR',
'Username_' : '@USER',
'Password_' : '@PASSWD',
'dirlocation' : '@DIR'
}

然后......

    ssh.connect(list1['IP_'], port=22, username=list1['Username_'], password=list1['Password_'])

但是可能有类似的东西:

ServerList = {

list1 = {
'IP_' : '@IPADDR',
'Username_' : '@USER',
'Password_' : '@PASSWD',
'dirlocation' : '@DIR'
}

list2 = {
'IP_' : '@IPADDR',
'Username_' : '@USER',
'Password_' : '@PASSWD',
'dirlocation' : '@DIR'
}
}

然后创建一个循环?

for listobj in ServerList:
    ssh.connect(ServerList.listobj['IP_'], port=22, username=listobj['Username_'], password=listobj['Password_'])

这可能是一些人认为是一个愚蠢的问题,但非常感谢你的帮助!

2 个答案:

答案 0 :(得分:2)

是的,可以有一个dict项目列表:

>>> foo = [ {'a':1,'b':2} , {'c':3,'d':4} ]
>>> foo[1]
{'c': 3, 'd': 4}
>>>

答案 1 :(得分:2)

这是可能的。你可以有dict的词典:

>>> ServerDict = {
...
... 'list1': {
... 'IP_' : '@IPADDR1',
... 'Username_' : '@USER',
... 'Password_' : '@PASSWD',
... 'dirlocation' : '@DIR'
... },
...
... 'list2': {
... 'IP_' : '@IPADDR2',
... 'Username_' : '@USER',
... 'Password_' : '@PASSWD',
... 'dirlocation' : '@DIR'
... }
... }

或列表:

>>> ServerList = [
...
...  {
... 'IP_' : '@IPADDR1',
... 'Username_' : '@USER',
... 'Password_' : '@PASSWD',
... 'dirlocation' : '@DIR'
... },
...
...  {
... 'IP_' : '@IPADDR2',
... 'Username_' : '@USER',
... 'Password_' : '@PASSWD',
... 'dirlocation' : '@DIR'
... }
... ]

你可以遍历dict

>>> for k,v in ServerDict.items():
...  print k, v['IP_']
...
list1 @IPADDR1
list2 @IPADDR2
>>> for k in ServerDict.keys():
...   print ServerDict[k]['IP_']
...
@IPADDR1
@IPADDR2
>>> for v in ServerDict.values():
...   print v['IP_']
...
@IPADDR1
@IPADDR2

或列表:

>>> for i in ServerList:
...   print i['IP_']
...
@IPADDR1
@IPADDR2