假設我們有一個快譯通,查找與值的最大數量的關鍵,並打印其值(字典,蟒蛇)
dict = {'blue': ['sky','sea'], 'orange': ['carrots','sunset','oranges'], 'green': ['grass']}
輸出應該是
,因爲它得到了最大數值。
這是我到目前爲止有:
for k,v in dict.items():
print(max(k,len(v)))
假設我們有一個快譯通,查找與值的最大數量的關鍵,並打印其值(字典,蟒蛇)
dict = {'blue': ['sky','sea'], 'orange': ['carrots','sunset','oranges'], 'green': ['grass']}
輸出應該是
,因爲它得到了最大數值。
這是我到目前爲止有:
for k,v in dict.items():
print(max(k,len(v)))
爲什麼不乾脆:
>>> d = {'blue': ['sky','sea'], 'orange': ['carrots','sunset','oranges'], 'green': ['grass']}
>>> print max(d.values(), key=len)
['carrots', 'sunset', 'oranges']
最好不要說出字典dict
爲好。這將覆蓋內置類型。
這看起來像我會這樣做,如果我有一個聰明的編程日:) – mgilson
自題詢問他們的關鍵 - 在這裏是如何做到這一點
>>> 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'])
這是一個很好的答案。我會補充一點,如果你在循環中做這個,你可能不應該 - 它會傾向於產生O(n^2)算法或者更糟。如果你在一個循環內進行,而你的字典很大,你可能應該看看樹木和/或堆。 – dstromberg
好問題,但如果您顯示運行當前代碼時得到的輸出/錯誤,將會有所幫助。 – SimonT