以最有效的方式返回生成器字典

时间:2014-02-16 07:01:56

标签: python dictionary itertools robustness

我写过这个函数返回dictionary,我想是itertools或者只是使用yeild我可以返回dictionary但是我从来没有这样做过dictionary

的情况
def configDb():
    """ Reads git global config file

        Returns:
            config(dict): git config settings
    """
    # Read git config file
    configFile, _ = execGitCommand('git config --list')
    config = {}
    for line in (each for each in configFile.split("\n") if each):
        config[line.split("=")[0]] = line.split("=")[-1]

    return config

如何让这个功能以我不必像configDb()那样调用的方式行事,而只是configDb[key]应该给我价值?

2 个答案:

答案 0 :(得分:0)

字典不能generator,但你可以yield 键值元组

def configDb():
    """ Reads git global config file

        Returns:
            config(dict): git config settings
    """
    # Read git config file
    configFile, _ = execGitCommand('git config --list')
    config = {}
    for line in (each for each in configFile.split("\n") if each):
        yield line.split("=")[0], line.split("=")[-1]

答案 1 :(得分:0)

部分配置文件几乎没用,所以“生成的字典”似乎没什么用处。

def configDb():
    """ Reads git global config file

        Returns:
            config(dict): git config settings
    """
    # Read git config file
    configFile, _ = execGitCommand('git config --list')
    rows = (line.split("=") for line in configFile.splitlines())
    return dict(row for row in rows if len(row)==2)