Как разбить файл на словарь Key / Value? - PullRequest
0 голосов
/ 11 октября 2011

По сути, я хочу создать текстовый файл (несколько штук) с парами ключ / значение, которые затем я могу ввести в Python для создания словаря.Затем я собираюсь вызвать ключ и использовать полученное значение в моих уравнениях.

Вот как я хочу, чтобы мой словарь выглядел при вводе в Python:

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

What I 'У меня возникла проблема с выяснением того, как A) отформатировать его в текстовом файле и B) как правильно извлечь показания из файла и превратить его в словарь.

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

Пример расчетов внизниже, чтобы показать, какой тип форматирования мне нужен для ключа.

Ответы [ 3 ]

2 голосов
/ 11 октября 2011

Эта проблема, вероятно, очень хорошо подходит для json, pickle или любого другого метода сериализации.Однако, если вы хотите сохранить свои данные в виде файла, состоящего из пар ключ / значение, вы можете сделать следующее.

Содержимое файла (с разделителем по вашему выбору, в данном случае "=", но можетbe ",", "\ 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)))
0 голосов
/ 11 октября 2011

Это хороший пример использования модуля json :

>>> 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
0 голосов
/ 11 октября 2011

Если вам действительно нужно прочитать его из текстового файла, и вы можете сами выбирать формат, тогда используйте сам 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...