我有来自网络世界的一堆BGP AS编号,我想如果我把它们全部放在字典格式中,我就能用他们正在寻找的AS编号的用户输入快速搜索它们并让它打印出来输出关键值来说明AS号在城市中的使用位置:
a12345 = {'Region': 'VEND', 'AS': '12345', 'City': 'Shanghai China'}
a56789 = {'Region': 'VEND', 'AS': '56789', 'City': 'Singapore'}
a98765 = {'Region': 'EMEA', 'AS': '98765', 'City': 'Concesio, IT'}
当我收到用户输入时,如果我尝试连接用户输入的5位数字转换为字符串并添加“a”+,我就得到一个无法用字符串调用字典。
>>> print(test)
a12345
>>> type(test)
<class 'str'>
>>> a12345.get('AS')
'12345'
>>> test.get('AS')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'get'
有没有办法将用户输入转换为另一种类型,比如dict?
我是Python中真正的新人,所以希望我的问题以正确的方式构建。
答案 0 :(得分:0)
这是因为a12345
是变量名称,test
是str
。如果您要接收用户的输入并希望根据该输入进行查找,则应以不同方式构建数据。
data = {
'a12345': {
'Region': 'VEND',
...
},
...
}
然后你可以做
data.get(test, {}).get('AS')
答案 1 :(得分:0)
您要做的是像这样构建数据:
a = {'12345': {'Region': 'VEND', 'City': 'Shanghai China'},
'56789': {'Region': 'VEND', 'City': 'Singapore'},
'98765': {'Region': 'EMEA', 'City': 'Concesio, IT'}}
然后要访问12345,您可以使用a['12345']
。