2013-12-18 24 views
1

假設我們有一個快譯通,查找與值的最大數量的關鍵,並打印其值(字典,蟒蛇)

dict = {'blue': ['sky','sea'], 'orange': ['carrots','sunset','oranges'], 'green': ['grass']} 

輸出應該是

​​

,因爲它得到了最大數值。

這是我到目前爲止有:

for k,v in dict.items(): 
    print(max(k,len(v))) 
+0

好問題,但如果您顯示運行當前代碼時得到的輸出/錯誤,將會有所幫助。 – SimonT

回答

9

爲什麼不乾脆:

>>> d = {'blue': ['sky','sea'], 'orange': ['carrots','sunset','oranges'], 'green': ['grass']} 
>>> print max(d.values(), key=len) 
['carrots', 'sunset', 'oranges'] 

最好不要說出字典dict爲好。這將覆蓋內置類型。

+1

這看起來像我會這樣做,如果我有一個聰明的編程日:) – mgilson

1

自題詢問他們的關鍵 - 在這裏是如何做到這一點

>>> d = {'blue': ['sky','sea'], 'orange': ['carrots','sunset','oranges'], 'green': ['grass']} 
>>> max_key = max(d, key=lambda k: len(d[k])) 
>>> max_key 
'orange' 

,一旦你有鑰匙,它是更快地看看它,而不是迭代d.values() - 假設你真的做到了需要鑰匙太

>>> d[max_key] 
['carrots', 'sunset', 'oranges'] 

或者,你可以拉出一個元組包含鍵/值對

>>> max(d.items(), key=lambda i :len(i[1])) 
('orange', ['carrots', 'sunset', 'oranges']) 
+0

這是一個很好的答案。我會補充一點,如果你在循環中做這個,你可能不應該 - 它會傾向於產生O(n^2)算法或者更糟。如果你在一個循環內進行,而你的字典很大,你可能應該看看樹木和/或堆。 – dstromberg