2014-02-16 54 views
0

我寫了這個函數返回一個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]應該給我的價值?

+1

「字典生成器」的要點是什麼?直到所有項目加載後,字典纔有用;只是返回一個字典。 –

回答

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] 
+0

我想我會堅持我目前的實施。 –

+1

是的,我不會責怪你:) – mhlester

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) 
相關問題