pan*_*mer 1 python list-comprehension dictionary-comprehension
我有一个包含以下行的输入文件:
key \t value1 \t value2 .....
Run Code Online (Sandbox Code Playgroud)
我想把这个文件读入一个字典,其中key是该行的第一个标记,值是值列表.
我认为这样的事情会这样做,但python给我一个错误,名称l没有定义.如何编写具有两个级别的"for"语句的理解?
f = open("input.txt")
datamap = {tokens[0]:tokens[1:] for tokens in l.split("\t") for l in enumerate(f)}
Run Code Online (Sandbox Code Playgroud)
使用该csv模块并将每行插入字典:
import csv
with open('input.txt') as tsvfile:
reader = csv.reader(tsvfile, delimiter='\t')
datamap = {row[0]: row[1:] for row in reader}
Run Code Online (Sandbox Code Playgroud)
这完全回避了这个问题.
您可以将str.split()结果放入元组以创建"循环变量":
datamap = {row[0]: row[1:] for l in f for row in (l.strip().split("\t"),)}
Run Code Online (Sandbox Code Playgroud)
这里row绑定str.split()了元组的一个结果,有效地创建了一个row = l.strip().split('\t')"赋值".