2012-06-05 42 views

回答

8

替代,這是一樣快@ jamylak的解決方案和更Python:

from itertools import imap 
max(imap(len, d)) 

查看產品比較:

$ python -m timeit -s "d = {'group 1': 1, 'group 1000': 0}" "len(max(d,key=len))" 
1000000 loops, best of 3: 0.538 usec per loop 

$ python -m timeit -s "d = {'group 1': 1, 'group 1000': 0}" "max(len(x) for x in d)" 
1000000 loops, best of 3: 0.7 usec per loop 

$ python -m timeit -s "d = {'group 1': 1, 'group 1000': 0}; from itertools import imap" \ 
    "max(imap(len, d))" 
1000000 loops, best of 3: 0.557 usec per loop 
+2

+1我同意這種方式是要走的路。注意python 3用戶:'map'是Python 3中的'imap'。 – jamylak

+0

我似乎無法在itertools中找到imap的文檔。這些信息是否過時? – beruic

8
>>> d = {'group 1': 1, 'group 1000': 0} 
>>> len(max(d, key=len)) 
10 

該解決方案是最快的,但我更喜歡通過@eumiro和@ ms4py的解決方案,因爲它們不重複len功能兩次,更pythonic imo。

10
>>> max(len(x) for x in d) 

>>> max(map(len, d)) 
+1

@jamylak - 兩種元素字典都比你的解決方案更慢... – eumiro

+1

@jamylak儘管你的解決方案速度更快。 – Gandaro

+0

@eumiro好的,我會把它留在這裏,但這是更好的答案。 – jamylak

相關問題