我如何从python中的列表中提取元素

时间:2017-10-31 19:06:55

标签: python list elements

我正在尝试从列表中提取元素。 我查了很多数据,但我不知道......

这是我的test.txt(文本文件)
 [左表中=时间,右表中=值]

0  81       
1  78       
2  76
3  74
4  81
5  79
6  80
7  81
8  83
9  83
10  83
11  82
  .
  .
22  81
23  80

如果当前时间等于表格中的时间,我想提取该时间的值。

这是我的demo.py(python文件)

import datetime

now = datetime.datetime.now())
current_hour = now.hour

with open('test.txt') as f:
    lines = f.readlines()

time = [int(line.split()[0]) for line in lines]
value = [int(line.split()[1]) for line in lines]

>>>time = [0,1,2,3,4,5,....,23]
>>>value = [81,78,76,......,80]

3 个答案:

答案 0 :(得分:0)

假设时间列的唯一值:

import datetime

with open('text.txt') as f:
    lines = f.readlines()

#this will create a dictionary with time value from test.txt as the key
time_data_dict = { l.split(' ')[0] : l.split(' ')[1] for l in lines }

current_hour = datetime.now().hour

print(time_data_dict[current_hour])

答案 1 :(得分:0)

import datetime
import csv
data = {}


with open('hour.csv', newline='') as f:
    reader = csv.reader(f)
    for row in reader:
        k, v = row
        data[k] = v


hour = str(datetime.datetime.now().hour)

print(data[str(hour)])

答案 2 :(得分:0)

您可以创建一个循环遍历列表,查找列表中每个位置的当前小时。

从位置0开始,它会将其与当前小时进行比较。如果它具有相同的值,它将在" time"中找到它所在位置的值。变量 extractedValue ,然后打破循环。

如果它不是相同的值,它将增加1 pos 变量,我们用它来查看列表。因此,它会继续搜索,直到第一个 if 为True或列表结束。

pos=0
for i in time:
    if(current_hour==time[pos]):
        extractedValue=value[pos]
        break
    else:
        pos+=1
        pass

随意询问您是否理解某事:)