簡體   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