2016-09-20 129 views
0

我們的老師給我們提出了一個挑戰,即製作一個程序,允許用戶輸入一個元素的符號,程序應輸出一些關於該元素的信息。如何從字典中的鍵打印特定值?

爲此,我必須使用字典。目前我有這個:

elements = {"Li": "Lithium" " 12" " Alkali Metal"} 
element = input("Enter an elemental symbol: ") 
print (elements[element]) 

這打印所有與李有關的東西。

我想知道如何才能輸出鹼性金屬,而不是與李相關的一切? (是的,我知道12不是Lithium的原子序數)

+0

我覺得你的字典應該是:{「禮」:「鋰」,「12」:「鹼金屬」}。目前所有的值都在單個關鍵字 –

+0

@MoinuddinQuadri:更有可能的是,「{」Li「:(」Lithium「,」12「,」Alkali Metal「)}'(或者使數字成爲實際數字,」{「Li 「:(」Lithium「,12,」Alkali Metal「)}'),看起來每個鍵都有三個離散的數據片段,但OP不理解字符串連接規則,重新關聯多個'str'和那個鍵。或者,更好的匿名'tuple's替代品可能會使用['collections.namedtuple'](https://docs.python.org/3/library/collections.html#collections.namedtuple),因此可以以命名屬性。 – ShadowRanger

+0

@PadraicCunningham:是的,OP並不是非常清楚他們如何確定輸出哪條信息。如果要查找的字段被設置一次並重復使用,'operator.attrgetter'可能會很有用,但是假設它們不會同時改變元素和屬性。 – ShadowRanger

回答

6

您目前有一個字符串作爲值,所以沒有太多可以做的事。您將需要存儲不同的值,你可以做一個子字典:

elements = {"Li": {"full_name":"Lithium", "num":"12", "type":"Alkali Metal"}} 

然後,只需訪問使用的是什麼特殊價值的關鍵,你想要得到的嵌套字典:

In [1]: elements = {"Li": {"full_name":"Lithium", "num":"12", "type":"Alkali Metal"}} 

In [2]: elements["Li"]["num"] 
Out[2]: '12' 

In [3]: elements["Li"]["full_name"] 
Out[3]: 'Lithium' 

In [4]: elements["Li"]["type"] 
Out[4]: 'Alkali Metal' 

如果你有沒有逗號分隔字符串每個子,蟒蛇將創建一個字符串:

In [5]: "Lithium" " 12" " Alkali Metal" 
Out[5]: 'Lithium 12 Alkali Metal' 
In [6]: "Lithium","12","Alkali Metal" 
Out[6]: ('Lithium', '12', 'Alkali Metal') # now its a three element tuple