社区首页 >问答首页 >循环只迭代一次

循环只迭代一次
EN

Stack Overflow用户
提问于 2018-01-04 15:13:33
回答 1查看 97关注 0票数 0

我正在使用pyvmomi模块从我们的vCenter导出数据。我非常接近于获得所需的输出,但我的脚本只迭代一次。为什么?

如果我在更新字典之前在print(d)循环中使用for,它将打印所有数据。

脚本摘要:

代码语言:javascript
代码运行次数:0
复制
top_dict = {"data": []}    

def get_obj(content, vimtype, name=None):
    return [item for item in content.viewManager.CreateContainerView(
        content.rootFolder, [vimtype], recursive=True).view]

## MAIN ##
...
content = si.RetrieveContent()
d = {}
idnum = 0
for dc in get_obj(content, vim.Datacenter):
    for cluster in get_obj(content, vim.ClusterComputeResource):
        for h in cluster.host:
            host_wwpn1 = ''
            for adaptr in h.config.storageDevice.hostBusAdapter:
                if hasattr(adaptr, 'portWorldWideName'):
                    if host_wwpn1 == '':
                        host_wwpn1 = (hex(adaptr.portWorldWideName)[2:18])
                    else:
                        host_wwpn2 = (hex(adaptr.portWorldWideName)[2:18])
            d['id'] = idnum
            d['datacenter'] = dc.name
            d['cluster'] = cluster.name
            d['host'] = h.name
            d['pwwn_F1'] = host_wwpn1
            d['pwwn_F2'] = host_wwpn2
            idnum = idnum + 1
    top_dict.update({"data": [d]})

电流输出:

代码语言:javascript
代码运行次数:0
复制
{
  "data": [
       {
        "id": 0,
        "datacenter": "MY_DATACENTER",
        "cluster": "MY_CLUSTER",
        "host": "MY_HOSTNAME",
        "pwwn_F1": "XXXXXXXXXXXXXXXX",
        "pwwn_F2": "XXXXXXXXXXXXXXXX"
        }
    ]
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-08 16:55:30

我很肯定您的问题是在您展示的代码的最后一行。该行用新值替换top_dict的整个内容。我很确定您希望将您的新字典d添加到top_dict中的列表中。

相反,我认为你想做top_dict["data"].append(d)。您还需要将d的初始化移到与append调用相同的级别(因此,如果您保持当前的最后一行缩进,则可能在前两个循环之间)。

我不确定最后一行是否缩进了正确的数量(因为我实际上不知道您的代码应该做什么)。目前,在使用这些值之前,您可能会在d中多次设置它们。您可能希望将最后一行缩进到与d中的行设置值相同的级别( d的初始化也应该在该级别上)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48104944

复制
相关文章
迭代循环:for语句
• 简单类型用来表示值:整数int、浮点数float、复数complex、逻辑值bool、字符串str
陆勤_数据人网
2020/08/27
8180
java for循环里面执行sql语句操作,有效结果只有一次,只执行了一次sql mybatis 循环执行update生效一次 实际只执行一次
java后台controller中,for循环执行数据库操作,但是发现实际仅仅执行了一次,或者说提交成功了一次,并没有实际的个数循环
noteless
2018/09/11
3K0
python - 可迭代/迭代器对象、for循环原理
目录 可迭代对象与迭代器对象 for循环本质 可迭代对象与迭代器对象 迭代:迭代的意思就是更新换代,每次的更新都必须依赖上一次的结果 迭代其实给我们提供了一种不依赖索引取值的方式 可迭代对象: 内置有 _ _ iter _ _方法的都称为可迭代对象 有字符串、列表、元组、字典、集合、文件对象 迭代器对象: 内置有 _ _iter _ _ 方法,又含有 _ _next _ _方法称为迭代器对象 文件本身即是可迭代对象,也是迭代器对象 可迭代对象调用_ _it
HammerZe
2022/03/25
9310
迭代循环丨SUMX函数
白茶在之前的一期,曾经分享过RANKX排名的问题,但是白茶当时犯了一个很严重的错误,这里和小伙伴们说一声抱歉。本期呢,既是纠正这个错误,也是学习另一个函数——迭代循环函数之SUMX。
PowerBI丨白茶
2021/09/01
1.1K0
迭代循环丨SUMX函数
R:purrr包用于循环迭代
purrr中有多个迭代函数,可以用于快速解决循环迭代的问题,purrr中常用的迭代函数有map、map2、walk、reduce等等。
生信菜鸟团
2020/07/16
1.6K0
再探循环、迭代、分治、回溯
采用“试错”思想,尝试“分步”去解决问题。在分步的过程中。根据上层结果,尝试此层最优解决此问题,如果此层较于上层不是最优则回溯。
PayneWu
2020/12/18
3450
追根揭底-循环\迭代\分治详细使用
Multiple solutions of Fibonacci(Python or Java) Violence law(Top-down) It can be solved directly according to the known conditions (f (0) = 0, f (1) = 1 F(N) = F(N - 1) + F(N - 2), for N > 1) Python Code class Solution: def fib(self, N: int) -> int: if N =
PayneWu
2020/12/18
6020
iOS_只执行一次、timer内重复点击,只执行最后一次
[NSObject cancelPreviousPerformRequestsWithTarget:self];
mikimo
2022/07/20
1.4K0
只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
_kyle
2020/11/25
7760
只出现一次的数字
只出现一次的元素
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
木瓜煲鸡脚
2020/09/24
8320
LeetCode,只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
微客鸟窝
2021/08/18
5890
LeetCode,只出现一次的数字
【Java】迭代器(Iterator)与增强for循环(forEach)
1. 迭代器(Iterator) 迭代器的作用 用来遍历集合 迭代器实现遍历 Iterator itr = 集合.iterator(); while(itr.hasNext()){ /** * next(): * ①指针下移1位,next指针初始状态没有指向任何元素,第一次调用next()方法时,指向第一位元素 * ②将下移后指针指向的元素返回 */ System.out.println(itr.next()); } 2. 增强for循环(forEach) 作用 用来遍历数组、集合 forE
CODER-V
2023/03/04
5400
js数组操作--使用迭代方法替代for循环
数组的迭代方法,这个想必大家都不陌生了,可能刚入门的人暂时还没接触到这个。但是以后的开发中,肯定会用得上的。我自身的一个使用经历就是,如果迭代方法用的适当,不但可以减少代码量,也能使代码可读性更强,性能上的优化也是肯定的了。还有一个就是,我本身在数组的遍历上,基本都是用for循环进行操作,在开始使用了迭代方法之后,我for循环用的很少。如果以后我更加熟练迭代方法的话,for使用会更少,也希望这样能帮助大家学习迭代方法。
守候i
2018/08/22
3.3K0
js数组操作--使用迭代方法替代for循环
找只出现一次的数字
  给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
Qt君
2020/08/05
6560
Android设置gif只播放一次
Android设置gif只播放一次 第一种写法: Glide.with(mContext).load(R.drawable.open_door_fail) .diskCacheStrategy(DiskCacheStrategy.SOURCE) .listener(new RequestListener<Integer, GlideDrawable>() { @Override
程序员飞飞
2020/02/27
2K0
LeetCode | 只出现一次的数字
题目 136. 只出现一次的数字 - 力扣(LeetCode) 给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。 示例 1 :
yiyun
2023/04/04
5450
LeetCode | 只出现一次的数字
mysql存储过程repeat循环多循环一次
由于repeat循环相当于do whlie的形式,先执行再判断条件是否满足,从而导致了会多循环一次,解决方法如下
仙士可
2019/12/17
2.7K0
【Kotlin 协程】Channel 通道 ② ( Channel 通道容量 | Channel 通道迭代 | 使用 iterator 迭代器进行迭代 | 使用 for in 循环进行迭代 )
直到 调用 Channel#receive 函数 取走了缓冲区中的数据 , 缓冲区 有了空间 , Channel#send 函数才会恢复执行 ;
韩曙亮
2023/03/30
7550
【Kotlin 协程】Channel 通道 ② ( Channel 通道容量 | Channel 通道迭代 | 使用 iterator 迭代器进行迭代 | 使用 for in 循环进行迭代 )
Swift 只出现一次的数字 - LeetCode
给定一个整数数组,除了某个元素外其余元素均出现两次。请找出这个只出现一次的元素。 备注: 你的算法应该是一个线性时间复杂度。 你可以不用额外空间来实现它吗?
韦弦zhy
2018/09/11
8020
点击加载更多

相似问题

循环只迭代一次。

23

for循环只迭代一次。

32

循环只迭代一次。

12

VBA for循环只迭代一次

10

Python for循环只迭代一次。

27
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档