【发布时间】:2015-06-05 02:09:41
【问题描述】:
我有一个由一个键和两个值组成的 .tsv。我想创建两个字典,一个从键映射到文件中每一行的第一个值,另一个从键映射到第二个值。我可以这样做:
v1Dict = {key: v1 for (key,v1,v2) in (line.split("\t") for line in (open (myinputfile)))}
v2Dict = {key: v2 for (key,v1,v2) in (line.split("\t") for line in (open (myinputfile)))}
但这显然效率低下,因为它两次读取/解析整个文件。
或者,我可以这样做:
v1Dict = {}
v2Dict = {}
for (key,v1,v2) in (line.split("\t") for line in (open (myinputfile))):
v1Dict[key]=v1
v2Dict[key]=v2
这是“最好”的方法吗?
【问题讨论】:
-
恐怕你需要扩展它。您需要确保文件已关闭。并且文件系统 io 开销应该大于当前的计算开销。
标签: python python-2.7 dictionary list-comprehension