基本上我想创建一个带有键/值对的文本文件(好几个)然后我可以输入到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']
下面的计算示例显示了密钥需要的格式类型。
答案 0 :(得分:2)
此问题可能非常适合json
,pickle
或任何其他序列化技术。但是,如果要将输入保存为由键/值对组成的文件,则可以执行以下操作。
文件内容(使用您选择的分隔符,在本例中为“=”,但可以是“,”,“\ t”,“”等等):
TWENTYDOLLAR=2000
TENDOLLAR=1000
FIVEDOLLAR=500
DOLLAR=100
QUARTER=25
DIME=10
NICKEL=5
PENNY=1
然后,在Python中,用分隔符拆分每一行并用它们的键/值对构建一个dict(确保该值为int
):
with open('input.txt', 'r') as inp:
usD=dict(((key, int(value)) for key, value in (line.split('=') for line in inp)))
答案 1 :(得分: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
}
然后您可以将其读入新词典:
>>> with open("test.json", "r") as inp:
... USD = json.load(inp)
...
>>> USD == usD
True
答案 2 :(得分:-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