我只有几周的时间学习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)
我完全理解了为什么上面的代码根本不起作用,它只是打印我创建的搜索变量...但是,我似乎在任何地方都找不到解决此问题的方法。
任何帮助将不胜感激!
答案 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()
是分别包含所有globally
和locally
定义的变量的字典。您可以将它们之一用于您的用例。
示例:
globals()['DICT001']
或如果字典不存在则避免错误:
globals().get('DICT001', None)