2017-07-30 39 views
0

我trynig送幾個參數作爲一個字典格式()函數,但我得到這個錯誤:無法發送的功能的輸入廣義的方式

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "<stdin>", line 4, in open_query 
KeyError: 'asset_name' 

THISIS我的代碼:

def open_query(query_file,parameters): 
    fd = open(query_file, 'r') 
    query = fd.read() 
    query = query.format(parameters) 
    fd.close() 
    return query 

參數可以執行下列操作之一:

parameters = {'date_':my_date,'instrument':'BTC_ETH'} 

parameters = {'asset_name':'BTC_ETH'} 

我該如何解決這個問題?

+1

'query'的值是什麼? –

回答

2

您需要雙重字典,但您還需要爲模板字符串提供命名值。

舉個例子,

>>> params={"a":1, "foo":"bar"} 
>>> "There is {a} {foo}".format(**params) 
'There is 1 bar' 

你也可以看看的Jinja2/Mako的模板,如果你想。

1

由於cricket_007寫,你應該使用**解壓你參數字典

query.format(**parameters) 

但它仍然會失敗爲其他輸入

parameters = {'date_':my_date,'instrument':'BTC_ETH'} 
query = "{assent_name}" 
query.format(**parameters) 

KeyError: 'assent_name'

你應該考慮這個案例並解決它。也許使用默認字典

from collections import defaultdict 
paramerters = defaultdict(lambda : "N/A") 
print("{assent_name}".format_map(paramerters))