python - 遍历两个列表,将列表中的项目与特定值进行比较
问题描述
我执行os.popen()
命令以从命令行访问存储在 InfluxDB 中的测量值。数据是一个表,但我只关心表的两个特定列,这就是我使用splitlines()
. 为了在 GUI 中显示特定的两列,我使用了一个for
循环,并剥离了标题行,将第 2 列和第 3 列的值存储在单独的数组中,如下所示:
list_of_number = []
list_of_assigned = []
for line in output[1:]:
self.cameraOutputTextEdit.append(line[2] + " " + line[1])
dict = {}
dict['claimed'] = line[1]
dict['eya_cam'] = line[2]
list_of_assigned.append(dict['claimed'])
list_of_number.append(dict['eya_cam'])
print(list_of_assigned)
print (list_of_number)
打印语句产生输出:
['claimed', '-------', 'false', 'true']
['eya_cam', '-------', '2', '1']
我现在需要执行某些 if 条件:
camNum = self.cameraNumber.text()
t="true"
f="false"
if (camNum in list_of_number and t in list_of assigned):
do_something
if (camNum list_of_number and f in list_of assigned):
do_something
if (camNum not in list_of_number):
do_something
这样做的问题是,当给定摄像机编号“2”时,它会执行第一个条件,即使它已在数据库中指定为“假”。这个逻辑我哪里错了?
解决方案
t in list_of_assigned
['claimed', '-------', 'false', 'true']
您正在测试该值'true'
是否在您的list_of_assigned
变量中。只要此列表中有一个 true,t in list_of_assigned
就会始终返回 true。您应该压缩这两个表并在循环中一起解析它们,或者检查list_of_number
列表中相机的索引,然后检查该索引list_of_assigned
是否为真。
推荐阅读
- java - Java中的私钥签名数据到PHP
- vhdl - 进行 VHDL IF 语句添加
- reactjs - 在 react gatbsy 头盔中插入 django 标签
- swt - 如何在 TreeEditor 按钮单击事件上获取当前行(元素)
- java - Spring security 401 Unauthorized 尽管有 permitAll
- html - 有没有办法选择最后一个兄弟,直到某个标签?
- azure - 在 Azure 容器实例上持久化 RabbitMQ 队列和数据
- python - Pandas,将多个 csv 导入一个具有多列的数据框
- c# - 如何从 WebApplicationFactory 获取配置?
- c# - .net core InMemoryCache 抛出错误