使用生成器表达式加载选项字典

时间:2014-03-17 22:54:32

标签: python dictionary generator-expression

我有这种格式的选项文件:

key value\t\n

N:B :. 有些值显示后面的标签。

我使用Code代码:

        src               = open("conf.cfg").readlines()
        item          =  item.split(" ")[0:2]
        key           =   item[0]
        value         =   item[1]
        dict_[key]    = value

我可以使用生成器表达式来获得相同的结果吗?

4 个答案:

答案 0 :(得分:1)

您可以使用词典理解,例如:

with open("conf.cfg") as f:
    dict_ = {key: value 
             for key, value in (line.strip().split(" ")[:2] 
                                for line in f)}

答案 1 :(得分:1)

是的,您可以使用生成器表达式,它看起来像这样:

with open("conf.cfg") as f:
    dict_ = dict(line.split() for line in f)    

我假设你没有钥匙或价值空间。如果您有空格("它们被引用"字符串),那么您将更容易使用csv模块读取文件。

答案 2 :(得分:1)

也许这样:

with open('config.txt') as f:
    dict_ = {k: v for k, v in (line.split() for line in f.readlines())}

答案 3 :(得分:0)

使用生成器功能:

def myGenerator():
    with open("conf.cfg") as f:
        for line in f.readlines():
            yield(line.split())

result = {k:v for k,v in myGenerator()}

print result