我是否正确思考Python词典

时间:2015-10-27 00:32:48

标签: python dictionary

我有来自网络世界的一堆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中真正的新人,所以希望我的问题以正确的方式构建。

2 个答案:

答案 0 :(得分:0)

这是因为a12345是变量名称,teststr。如果您要接收用户的输入并希望根据该输入进行查找,则应以不同方式构建数据。

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