2015-10-27 22 views
0

我有一堆來自網絡世界的BGP AS號碼,我想如果我把它們全部放入字典格式,我將能夠使用用戶輸入的AS號快速搜索它們在尋找和它打印出來的鍵值說得清,作爲數字是在使用城市明智:我是否正確思考Python字典

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' 

有什麼辦法可以將用戶輸入轉換成不同類型的字典嗎?

我是一個真正的Python新手,所以希望我的問題是以正確的方式構建的。

+1

哪裏來'測試'在? – AndreL

回答

0

這是因爲a12345是一個變量名,而teststr。如果您要接收來自用戶的輸入並希望根據該輸入進行查找,則應該以不同的方式構建數據。

data = { 
    'a12345': { 
     'Region': 'VEND', 
     ... 
    }, 
    ... 
} 

,然後你可以做

data.get(test, {}).get('AS') 
0

你想要做的是組織像這樣的數據:

a = {'12345': {'Region': 'VEND', 'City': 'Shanghai China'}, 
    '56789': {'Region': 'VEND', 'City': 'Singapore'}, 
    '98765': {'Region': 'EMEA', 'City': 'Concesio, IT'}} 

然後訪問12345,您可以使用a['12345']