2015-10-16 203 views
0

如何在Python中將字符串值指定爲空字典?例如,如何在Python中將字符串值分配爲空字典?

print hdr 
AB_1_15_Oct_2015 
hdr = {} 
hdr 
{} 

但我想AB_1_15_Oct_2015是一個空字典。

+0

你是什麼意思我想分配一個字符串值作爲一個空的字典?你在說用字符串定義一個變量嗎? –

+0

'AB_1_15_Oct_2015 = {}'? – sam

+0

sam2090,是的,這是正確的。但我不想使用AB_1_15_Oct_2015來定義一個空字典。 –

回答

0

花了一段時間來弄清楚,但試試這個:

hdr = "AB_1_15_Oct_2015" 
print hdr 
locals()[hdr] = {} 

print AB_1_15_Oct_2015 

輸出:

AB_1_15_Oct_2015

{}

Demo

+0

太棒了。非常感謝您的幫助。 –

+0

@SaravanaThoppay不客氣 – sam

1

動態分配變量通常被認爲是一種不好的做法。有辦法做到這一點,例如使用exec,但這是危險的。 更好的想法是使用字典,因爲動態創建鍵和值很簡單。稍微修改現有代碼:

hdr = "AB_1_15_Oct_2015" 
someDict = {} 
someDict[hdr] = {} 

然後,你既可以從頂層

someDict[hdr]['a'] = "spam" 

或者通過指定其他變量來引用它訪問:

hdrDict = someDict[hdr] 
hdrDict['b'] = "parrot" 
+0

該解決方案對我來說也適用。謝謝。我正在用另一種方式掙扎。你爲什麼稱它危險? –

+0

'exec'和'eval'語句允許Python將字符串作爲代碼運行。如果這些字符串來自用戶(作爲文本輸入,來自文件,用戶可以訪問的掃描文件名等),則它給用戶提供了將任意代碼注入到程序中的手段。這是一個巨大的安全漏洞。一個不太糟糕的情況是您是生成所有字符串的人,即使這樣,一個錯誤可能會導致嚴重的副作用,或者難​​以調試的問題。 – Tofystedeth

0

如果你說你需要一個名爲「AB_1_15_Oct_2015」的字典。你需要明確定義一個名爲詞典:

AB_1_15_Oct_2015 = {} 

如果你的意思是你希望能夠將基於關在一個字符串值的變量名,那麼有沒有辦法做到這一點。另外,我想不出你想要的理由。變量名稱僅在代碼內部使用,因此能夠根據日期更改變量名稱並不會幫助您跟蹤特定的日期。如果沒有您所要完成的更多信息,很難能夠告訴你需要什麼,但我認爲這樣的事情會完成你想要的:

hdr = { 
    "identifier": "AB_1_15_Oct_2015", 
    "data": whatever_you_wanted_to_store 
    } 

這樣該標識符被附加到數據以可訪問的方式。

相關問題