jam*_*lak 9

>>> d = {'group 1': 1, 'group 1000': 0}
>>> len(max(d, key=len))
10
Run Code Online (Sandbox Code Playgroud)

这个解决方案是最快的,但我更喜欢@eumiro和@ ms4py的解决方案,因为它们不重复这个len功能两次并且更加pythonic imo.


sch*_*mar 9

另类,与@ jamylak的解决方案一样快,更加pythonic:

from itertools import imap
max(imap(len, d))
Run Code Online (Sandbox Code Playgroud)

看比较:

$ 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
Run Code Online (Sandbox Code Playgroud)

  • +1我同意这种方式是要走的路.注意python 3用户:`map`是Python 3中的`imap`. (2认同)