如何在函数中附加到python字典

2024-09-30 05:26:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码:

def main():
   content = si.RetrieveContent()
   esx_vm = {}
   search_index = si.content.searchIndex
   for child in content.rootFolder.childEntity:
      if hasattr(child, 'vmFolder'):
         datacenter = child
         vmFolder = datacenter.vmFolder
         vmList = vmFolder.childEntity

         for vm in vmList:
            vmname = PrintVmInfo(vm)
            if vmname is not  None:
                hostname = vmname

                vm = si.content.searchIndex.FindByDnsName(None, hostname, True)
                try :
                    ESX = vm.runtime.host.name
                except :
                    pass

   esx_vm.update({ESX:hostname})
   print(esx_vm)


if __name__ == "__main__":
   main()

代码应该创建一个映射esxvm的字典,格式如下:

{'esx1': 'vm1'}

但是我只得到一个键值{'esx1': 'vm1'},而不是所有的esx:vm映射。我例外地得到:

{'esx1': 'vm1','esx2': 'vm2','esx3': 'vm3','esx4': 'vm4'} 

等等。你知道吗

有什么建议如何得到字典的正确值吗?你知道吗


Tags: 代码childforifmainvmcontenthostname
1条回答
网友
1楼 · 发布于 2024-09-30 05:26:27

您可能需要在“for循环”中更新ESX值。但是它恰好在外部,这就是为什么dict中有一个键。请添加ESX键作为for循环的一部分。类似这样的东西(内部为循环)

try :
    ESX = vm.runtime.host.name
    esx_vm.update({ESX:hostname}) # Or, just, esx_vm[ESX]=hostname
except :
    pass

相关问题 更多 >

    热门问题