2016-01-12 16 views
-2

我有以下代碼:如何從Python中的函數內部的字典中調用密鑰?

def all_dsc(x): 
    dict={'a':x+2,'b':x-2} 
    return dict 

我想從具體而言,本詞典調用函數外部鍵。 smthn喜歡:

all_dsc.dict.keys() 

什麼是做的最好的方式?

+0

的可能的複製[在不使用\ global的情況下在Python中的函數外部訪問函數變量](http://stackoverflow.com/questions/19326004/access-a-function-variable-outside-the-function-in-python-without -using-global) – Lav

+0

@Lav:這實際上並非所有有用的重複。在函數上設置屬性與設置全局無關;你所做的只是命名空間而已,但全局的許多問題仍然適用(例如,它不是線程安全的)。 –

回答

2

您不能從函數外部訪問函數中的本地人。你所能做的就是返回字典對象,調用函數,你已經做了。

調用的函數,然後只把電話表達字典的結果:

all_dsc(42).keys() 

演示:

>>> all_dsc(42) 
{'a': 44, 'b': 40} 
>>> all_dsc(42).keys() 
['a', 'b'] 

注意,你真的不應該使用的名稱內置類型作爲變量,如果你可以避免它。 dict是一個內置的類型,所以嘗試使用不同的名字在這裏:

def all_dsc(x): 
    mapping = {'a': x + 2, 'b': x - 2} 
    return mapping 

甚至避免創建本地可言,因爲它並不重要的位置:

def all_dsc(x): 
    return {'a': x + 2, 'b': x - 2} 
+0

非常感謝,不知道我必須通過函數的參數來調用密鑰。 –

+0

另一個問題:如果我在一個函數中有多個字典呢?我怎麼稱呼他們每個人的鑰匙? –

+0

@MarioL:將它們全部返回到一個元組中:'返回d1,d2,d3',然後爲元組索引或使用元組解開來將字典存儲在單獨的變量中。 –

相關問題