Как напечатать словарь из ввода? - PullRequest
0 голосов
/ 02 мая 2019

Я всего несколько недель изучаю Python, поэтому, пожалуйста, потерпите меня.

Я создал набор словарей, и я хотел бы, чтобы пользователь мог искать имя одного (через Input), а затем Print весь словарь.

Я вижу, где проблема, когда я ввожу Input, она присваивает ее собственной переменной, затем вызывает ее Print ... есть ли способ, которым я могу взять значение и отобразить словарь с этим именем переменной?

DICT001 = {
     'MAP' : 'XXXX',
     'SSC'   : '0333',
     'Method': 'R',
     'Code1': 'S093733736',
     'Reg ID'  : '01'
}

DICT002 = {
     'MAP' : 'XXXX',
     'SSC'   : '0333',
     'Method': 'H',
     'Code1': 'B19SN99854',
     'Reg ID'  : 'S'
}

Search = input("Enter Dictionary to Search:")

print (Search)

Я полностью понимаю, почему приведенный выше код вообще не работает, он просто печатает созданную мной переменную поиска ... Однако я нигде не могу найти обходной путь для этого.

Любая помощь будет принята с благодарностью!

Ответы [ 3 ]

2 голосов
/ 02 мая 2019

Краткий ответ:

c = "DICT001"
tmp_dict = globals().get(c, None)
print(tmp_dict if tmp_dict else "There's no variable \"{}\"".format(c))

Расширенный ответ:

Да, есть несколько способов, как получить значение переменной по ее строковому имени, НО факт, что это обычно требуется, является маркером неверного кода.

Обычным способом хранения таких данных будет вложенный словарь .

* ** 1 022 тысяча двадцать-один * Пример:
dictionaries = {
    "DICT001": {
         'MAP' : 'XXXX',
         'SSC'   : '0333',
         'Method': 'R',
         'Code1': 'S093733736',
         'Reg ID'  : '01'
    },
    "DICT002": {
         'MAP' : 'XXXX',
         'SSC'   : '0333',
         'Method': 'H',
         'Code1': 'B19SN99854',
         'Reg ID'  : 'S'
    }
}

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

Код:

c = "DICT001"
tmp_dict = dictionaries.get(c, None)
print(tmp_dict if tmp_dict else "There's no key \"{}\"".format(c))
0 голосов
/ 02 мая 2019

globals() и locals() - это словари, содержащие все globally и locally определенных переменных соответственно. Вы можете использовать любой из них в своем случае.

Пример:

globals()['DICT001']

ИЛИ чтобы избежать ошибки, если словарь отсутствует, сделайте следующее:

globals().get('DICT001', None)
0 голосов
/ 02 мая 2019

или лучше просто создать родительский словарь,

parent_dict = {
      'DICT001' = {
     'MAP' : 'XXXX',
     'SSC'   : '0333',
     'Method': 'R',
     'Code1': 'S093733736',
     'Reg ID'  : '01'
      },
      'DICT002' = {
     'MAP' : 'XXXX',
     'SSC'   : '0333',
     'Method': 'H',
     'Code1': 'B19SN99854',
     'Reg ID'  : 'S'
 }
}

search = input("Enter Dictionary to Search:")
if search in parent_dict:  
   print(f'here\'s you dict {parent_dict[search]}')
else:
   print('child dictionary not found')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...