python - 写python二级循环理解

标签 python list-comprehension dictionary-comprehension

我有一个包含以下行的输入文件:

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/

相关文章:

python - 列表列表 python : combine list elements that are the same size

来自 dict 理解引用子类的 Python 类变量

python - 使用 PyCrypto 使用 RSA 公钥解密消息

python - 添加到购物车时 selenium 失败,如何单击 javascript 按钮?

python list_composition获取多个值

haskell - 案例表达式/列表推导中的模式匹配

python - 使用字典推导式添加和组合值?

python - 比较两个字典并打印差异

python - 将 Eclipse PyDev 的搜索功能与外部库一起使用

python - 使用 rpy2 在 Python 中保存 RData 工作区