2012-11-30 47 views
0

如果我定義了以下字典,我可以使用函數(如max(), min(), numpy.mean(), numpy.median())計算關於adict所有鍵的鍵'avalue'的值的統計信息(即對於key1至key3)沒有首先將值附加到單獨的可迭代對象?在常用鍵名稱的值上使用函數

adict = {'key1':{'achar':'a','avalue':1},'key2':{'achar':'b','avalue':2},'key3':{'achar':c,'avalue':3}} 
+0

你爲什麼不想要一個單獨迭代的對象?如果你使用一個生成器表達式,它應該和你能想到的其他東西一樣高效。 – happydave

+0

例如'max(adict [k] ['avalue'] for k in adict.iterkeys())' – happydave

回答

3

我一步寫下面的步驟,希望你可以得到你的答案

>>> [ x for x in adict.keys() ] 
['key3', 'key2', 'key1'] 
>>> [ adict[x] for x in adict.keys() ] 
[{'achar': 'c', 'avalue': 3}, {'achar': 'b', 'avalue': 2}, {'achar': 'a', 'avalue': 1}] 
>>> [ adict[x]['avalue'] for x in adict.keys() ] 
[3, 2, 1] 
>>> sum([ adict[x]['avalue'] for x in adict.keys() ]) 
6 
+1

''.keys()'這裏有一點很重要 - 字典的默認迭代器返回鍵 - 'for x in adict.keys()'與adict'中的for x相同。 –

+0

完美。謝謝happydave,尤其是肖恩。我看它是如何工作的 – cdelsola

+0

@Burhan Khalid謝謝你 –