如何解决在Python中两个列表之间匹配值?
对于使用哪种逻辑将列表与包含值的CSV文件/列表进行匹配,我有些困惑。我有一个想法,可以使用for循环来简单地遍历CSV并进行匹配:
for j in range(len(data)):
if STR_list[j] in data[j]:
print(data[j])
但是,这实际上并没有打印出我想要的匹配项。这是打印时data和STR_list值的样子(在上述for循环之前):
print(STR_list):
['AGATC','4','AATG','1','TATC','5']
print(data)
[OrderedDict([('name','Alice'),('AGATC','2'),('AATG','8'),('TATC','3')]),OrderedDict([('name','Bob'),'4'),'1'),'5')]),'Charlie'),'3'),'5')])]
因此,在这种情况下,带有“ Bob”的行将是匹配项,因为这些值会对齐。我应该为此使用正则表达式,还是我认为可以使用for循环是正确的?
编辑:这是我打开CSV的方式(毕竟它似乎是列表吗?)
with open('file.csv') as csvfile:
reader = csv.DictReader(csvfile)
data = list(reader)
解决方法
if STR_list[j] in data[j]:
此行应被制表,以位于for循环内。假设这是复制/粘贴错误:
STR_list [j]不会查看整个STR_list,而只是查看其中的第j个项目(因此,当您查看data [0]时,您正在查看的是'AGATC',而您查看的是数据[ 1]您正在查看“ 4”等。
您想要的是查找所有STR_list,并查看它是否在每次检查数据的第二,第三和第四位置。
此外,STR_list的格式需要与数据相同,因此您需要在那里有一个元组列表(或者是OrderedDict,我不熟悉该数据类型,所以我不知道这是否就是全部)组成数据。)
真的,您要查找的内容等同于:
如果OrderedDict([('name','Alice')的子集中的[['AGATC','2'),('AATG','8'),('TATC','3')] ),('AGATC','2'),('AATG','8'),('TATC','3')])
我意识到我没有完全为您提供所需的代码,但是我希望我能对它进行解释,以便您自己理解和理解它。
,var win = window.open(url,'_blank');
基本上,您需要学习如何比较两个列表以及如何从列表中选择特定元素
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。