如何将文件拆分为字典键/值?

时间:2011-10-11 05:05:30

标签: python dictionary

基本上我想创建一个带有键/值对的文本文件(好几个)然后我可以输入到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']

下面的计算示例显示了密钥需要的格式类型。

3 个答案:

答案 0 :(得分:2)

此问题可能非常适合jsonpickle或任何其他序列化技术。但是,如果要将输入保存为由键/值对组成的文件,则可以执行以下操作。

文件内容(使用您选择的分隔符,在本例中为“=”,但可以是“,”,“\ 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

获取更多详细信息