根据条件拆分Python列表

时间:2014-11-06 04:34:27

标签: python list python-2.7

我有一个python列表如下:

mylist = [('Item A','CA','10'),('Item B','CT','12'),('Item C','CA','14')]

我想将其拆分为基于第2列=='CA'

的列表

期望的输出:

filtered_list = [('Item A','CA','10'),('Item C','CA','14')]

我的尝试:显然这里有一些问题!

mylist = [('Item A','CA','10'),('Item B','CT','12'),('Item C','CA','14')]
filtered_list[]
for row in mylist:
    if [row:1] = 'CA'
       filtered_list.append(mylist[row])

3 个答案:

答案 0 :(得分:1)

您可以使用列表理解来实现此目的:

mylist = [('Item A','CA','10'),('Item B','CT','12'),('Item C','CA','14')]

filtered_list = [item for item in mylist if item[1]=='CA']

答案 1 :(得分:1)

您可以通过以下方式将python的过滤器用于此目的。

filtered_list = list(filter(lambda x: x[1] =='CA',mylist)))

答案 2 :(得分:0)

我不想写自己的答案,而是想指出解释错误的地方。

mylist = [('Item A','CA','10'),('Item B','CT','12'),('Item C','CA','14')]
filtered_list[]                         ## I believe this was typo 
for row in mylist:
    if [row:1] = 'CA'                    ## this where you missed it!
       filtered_list.append(mylist[row])

我已更正您的代码。

mylist = [('Item A','CA','10'),('Item B','CT','12'),('Item C','CA','14')]
filtered_list = []                        ## list created
for row in mylist:
    if row[1] == 'CA':                    ## == for if condition and : 
        filtered_list.append(row)         ## appending the row if row[1] == "CA"
print filtered_list