繁体   English   中英

遍历两个列表,将列表中的项目与特定值进行比较

[英]Iterate over two lists, compare items of the lists with a specific value

我执行os.popen()命令以从命令行访问存储在 InfluxDB 中的测量值。 数据是一个表,但我只关心表的两个特定列,这就是我使用splitlines()的原因。 为了在 GUI 中显示特定的两列,我使用了一个for循环,并剥离了标题行,将第 2 列和第 3 列的值存储在单独的 arrays 中,如下所示:

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)

打印语句产生 output:

['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变量中。 只要此列表中有一个为真t in list_of_assigned将始终返回真。 您应该 zip 这两个表并在循环中一起解析它们,或者检查list_of_number列表中相机的索引,然后检查list_of_assigned中的索引是否为真。

您是否不小心输入了assigned的单词?

if (camNum in list_of_number and t in list_of_assigned):

我想你可能打算像上面那样写。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM