我有一个包含以下行的输入文件:
key \t value1 \t value2 .....
我想将此文件读入字典,其中键是行的第一个标记,值是值的列表。
我认为像这样的东西可以做到,但 python 给我一个错误,名称 l
未定义。我如何编写具有两个级别的“for”语句的理解?
f = open("input.txt")
datamap = {tokens[0]:tokens[1:] for tokens in l.split("\t") for l in enumerate(f)}
最佳答案
使用 csv
模块并将每一行插入到字典中:
import csv
with open('input.txt') as tsvfile:
reader = csv.reader(tsvfile, delimiter='\t')
datamap = {row[0]: row[1:] for row in reader}
这完全回避了这个问题。
您可以将 str.split()
结果放入元组中以创建“循环变量”:
datamap = {row[0]: row[1:] for l in f for row in (l.strip().split("\t"),)}
此处 row
绑定(bind)到元组的一个 str.split()
结果,有效地创建了一个 row = l.strip().split( '\t')
'赋值'。
关于python - 写python二级循环理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34997484/