如何在列表中查找特定元素?

时间:2015-10-25 17:09:42

标签: python list

所以我在csv文件中追加了一个巨大的数据列表(在这种情况下是3行 - > 1年,月,以及与之对应的值) 文件示例:

2001,01,65
2001,02,56
..goes until December 2001
2002,01,45
2002,02,46
..goes until December 2002
( Almost 50 years of data just like this )

我将这些值附加到列表中,并且我尝试为特定年份的每个月制作一个列表。所以,让我们说Jan,我怎样才能将jan的所有值附加到特定的年份,比如2000。 希望这是有道理的!

(请不要写长代码并长时间处理它。只有文字的方式说这样做然后这样做会有所帮助。) 我只是不知道如何在数据集合中找到特定元素。

3 个答案:

答案 0 :(得分:0)

您可以使用循环和if条件将其添加到单独的列表中:

for rows in myOriginalList:
    if row[0] == year and row[1] == month:
        newFilteredList.append(row)

答案 1 :(得分:0)

如果您已连续阅读多年,连续几个月阅读,一行显示值,并将其存储在yearsmonthsvalues中:

filtered_list = []
query_year = 2000
query_month = 1
for year, month, value in zip(years, months, values):
    if int(year) == query_year and int(month) == query_month:
        filtered_list.append(int(value))    

答案 2 :(得分:0)

您可以使用带有if子句的list comprehension进行过滤:

csv_file = [
    "2001,01,65",
    "2001,01,23",
    "2001,02,56",
    "2002,01,45",
    "2002,02,46"
] # Just an example. In reality, you'll want to use open() on your actual file.

# prepare a CSV reader:
import csv
reader = csv.DictReader(csv_file, ['year', 'month', 'age'])

# read and filter the data:
january_2001_data = [row for row in reader
     if row['year'] == '2001' and row['month'] == '01']
# january_2001_data == [{'age': '65', 'month': '01', 'year': '2001'},
#                       {'age': '23', 'month': '01', 'year': '2001'}]

如果您的CSV文件真的非常真的巨大,那么您可能需要查看pandas之类的内容。