循环,而数组具有具有特定值的元素

2024-05-19 11:31:47 发布

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

假设我有一个设备列表,我需要检查它们的状态,然后脚本才能继续。简单地说,它可以是这样的:

devices = {
    'dev1': {'ready':False, ...},
    'dev2': {'ready':False, ...},
    'dev3': {'ready':False, ...}
}

while /exists device with 'ready' == False/:
    ... some code scanning for devices ...
    if /device ready/:
        devices[devX]['ready'] = True

我不明白while语句中的条件应该是什么样子。你知道吗

我找到的最接近的解决方案是:

len([d for d in devices if d['ready'] == True]) > 0

但它给了我TypeError:字符串索引必须是整数,而不是str

你能给个建议吗?你知道吗


Tags: 脚本falsetrue列表forifdev1device
2条回答

问题是for d in devices只返回dict的键

len([d for d, v in devices.items() if v['ready'] == True]) > 0

在代码中,d遍历设备中的每个键(而不是每个值)。这就是d['ready']不起作用的原因:d是一个字符串,就像'dev1'。可以使用^{}迭代这些值。你知道吗

如果要检查devicesdict中的任何值是否已就绪,可以使用^{}

if any(x['ready'] for x in devices.values()):

如果要检查它们是否都准备好了,可以使用^{}

if all(x['ready'] for x in devices.values()):

相关问题 更多 >

    热门问题