如何从输入中打印字典?

时间:2019-05-02 09:49:33

标签: python dictionary variables

我只有几周的时间学习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 个答案:

答案 0 :(得分:2)

简短答案:

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

扩展答案:

是的,有几种方法可以通过字符串名称来获取变量的值,但通常需要它是错误代码的标记。

常规的存储方式,例如嵌套字典

示例:

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))

答案 1 :(得分:0)

或者更好地只是创建父词典,

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')

答案 2 :(得分:0)

globals()locals()是分别包含所有globallylocally定义的变量的字典。您可以将它们之一用于您的用例。

示例:

globals()['DICT001']

或如果字典不存在则避免错误:

globals().get('DICT001', None)