2011-10-11 77 views
-2

基本上我想用鍵/值對創建一個文本文件(好幾個),然後我可以輸入到Python來創建一個字典。 然後我打電話給密鑰,並在我的方程中使用結果值。如何將文件分割成字典鍵/值?

這裏就是我想我的字典,尋找當輸入到Python的一樣:

usD = {'TWENTYDOLLAR': 2000, 'TENDOLLAR': 1000, 'FIVEDOLLAR': 500, 'DOLLAR': 100,  'QUARTER': 25, 'DIME': 10, 'NICKEL': 5, 'PENNY': 1} 

我有一個問題,什麼跟在盤算如何如何A)它在文本文件和B格式)怎麼樣正確地從文件中讀取數據並將其轉換爲字典。

twentydollars = change/usD['TWENTYDOLLAR'] 
change = change % usD['TWENTYDOLLAR'] 
tendollars = change/usD['TENDOLLAR'] 
change = change % usD['TENDOLLAR'] 

下面的計算示例顯示我需要哪種格式的密鑰。

+1

你有什麼已經嘗試過? – kindall

回答

-1

如果您確實需要從txt文件中讀取它,並且您可以自由決定格式,那麼請使用Python本身作爲一種格式來簡化它。

這是你的輸入文件會是什麼樣子 -

usD = {'TWENTYDOLLAR': 2000, 
     'TENDOLLAR': 1000, 
     'FIVEDOLLAR': 500, 
     'DOLLAR': 100,  
     'QUARTER': 25, 
     'DIME': 10, 
     'NICKEL': 5, 
     'PENNY': 1 
     } 

讓我們把這個文件curreny.conf。然後在你的python模塊中,你可以使用execfile()來執行這個文件,這會給你usD字典在你調用它的範圍。

execfile('path/to/currency.conf') 

twentydollars = change/usD['TWENTYDOLLAR'] 
change = change % usD['TWENTYDOLLAR'] 
tendollars = change/usD['TENDOLLAR'] 
change = change % usD['TENDOLLAR'] 

你可以在execfile()這裏更多的細節 - http://docs.python.org/library/functions.html#execfile

+2

哇。這聽起來像是一種安全風險。爲此更好地使用JSON。 –

0

這是一個很好的用例爲json module

>>> import json 
>>> usD = {'TWENTYDOLLAR': 2000, 'TENDOLLAR': 1000, 'FIVEDOLLAR': 500, 
      'DOLLAR': 100, 'QUARTER': 25, 'DIME': 10, 'NICKEL': 5, 'PENNY': 1} 
>>> with open("test.json", "w") as out: 
... json.dump(usD, out, indent=2) 

這將創建下列內容的文件:

{ 
    "FIVEDOLLAR": 500, 
    "TWENTYDOLLAR": 2000, 
    "PENNY": 1, 
    "NICKEL": 5, 
    "DIME": 10, 
    "TENDOLLAR": 1000, 
    "QUARTER": 25, 
    "DOLLAR": 100 
} 

然後你可以把它讀入新的d ictionary:

>>> with open("test.json", "r") as inp: 
... USD = json.load(inp) 
... 
>>> USD == usD 
True 
2

此問題很可能非常適合jsonpickle或任何其他序列化技術。但是,如果要將輸入保存爲由鍵/值對組成的文件,則可以執行以下操作。

文件內容(與您選擇的分隔符,在這種情況下 「=」,但可能是 「 」 「\ t」,「」,等等):

TWENTYDOLLAR=2000 
TENDOLLAR=1000 
FIVEDOLLAR=500 
DOLLAR=100 
QUARTER=25 
DIME=10 
NICKEL=5 
PENNY=1 

然後在Python中,通過分隔符分開的每一行,並建立一個字典與它們鍵/值對(保證值是int):

with open('input.txt', 'r') as inp: 
    usD=dict(((key, int(value)) for key, value in (line.split('=') for line in inp)))