使用理解从一个.tsv创建两个词典



我有一个.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

这是"最好"的方法吗?

您可以使用with:

v1Dict = {}
v2Dict = {}
with open(myinputfile) as f:
    for(key, v1, v2) in [line.split("t") for line in f]:
        v1Dict[key] = v1
        v2Dict[key] = v2

或者,你可以把它做成一个单行:

f = open(myinputfile);v1Dict,v2Dict=[{key: v1 for (key,v1,v2) in (line.split("t") for line in f)}, {key: v2 for (key,v1,v2) in (line.split("t") for line in f)}]

有关使用with的更多信息,请参阅此处。

最新更新