Python 检查列表是否包含csv文件的元素

Python 检查列表是否包含csv文件的元素,python,list,csv,Python,List,Csv,我有一个csv文件,其中包含如下项目:some、foo、bar,我在python中有一个不同的列表,其中包含不同的项目,如att1、some、bar、try、other。是否可以为每个列表在同一csv文件中创建一行,并将“键”对应的值设置为1,否则设置为0?因此,在这种情况下,csv文件结果将是: some,foo,bar 1,0,1 您可以创建一个以键作为列名的字典 csv = { "some" : [], "foo" : [], "bar" : [] } 现在,对于每个列表,

我有一个csv文件,其中包含如下项目:some、foo、bar,我在python中有一个不同的列表,其中包含不同的项目,如att1、some、bar、try、other。是否可以为每个列表在同一csv文件中创建一行,并将“键”对应的值设置为1,否则设置为0?因此,在这种情况下,csv文件结果将是:

some,foo,bar
1,0,1

您可以创建一个以键作为列名的字典

csv = {
  "some" : [],
  "foo" : [],
  "bar" : []
}
现在,对于每个列表,检查值是否在dict的键中,并根据需要追加

for list in lists:
  for key in csv.keys():
    if key in list:
       csv[key].append(1)
    else:
       csv[key].append(0)

这里有一种方法,使用熊猫。
假设
example.csv
的上下文是:

some,foo,bar
然后,我们可以用以下方式表示样本数据:

import pandas as pd

keys = ["att1","some","bar","try","other"]
data = pd.read_csv('~/Desktop/example.csv', header=None)

print(data)
      0    1    2
0  some  foo  bar

matches = data.apply(lambda x: x.isin(keys).astype(int))

print(matches)
   0  1  2
0  1  0  1

newdata = pd.concat([data, matches])

print(newdata)
      0    1    2
0  some  foo  bar
0     1    0    1
现在写回CSV:

newdata.to_csv('example.csv', index=False, header=False)

# example.csv contents
some,foo,bar
1,0,1
给定
数据
,我们可以将其压缩为一个链式命令:

(pd.concat([data, 
            data.apply(lambda x: x.isin(keys).astype(int))
           ])
   .to_csv('example1.csv', index=False, header=False))

是的,有可能。大多数事情都是这样。你有没有写过任何代码来解决这个问题?对不起,我不知道@paulCollingwoodw有了这些代码,元素的顺序就有了保证?1和0是否在同一个键列中?是的,一行中的所有值都将位于所有三个列表中的同一索引中,因为我们将为每个键插入所有三个列表中。