>>> max(len(x) for x in d)
或者
>>> max(map(len, d))
另一种方案,与@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
imap
已更名为map
,并且是Python3中的内置函数。您可以简单地使用max(map(len, d))
。 - Lord Elrond>>> d = {'group 1': 1, 'group 1000': 0}
>>> len(max(d, key=len))
10
这个解决方案是最快的,但我更喜欢@eumiro和@ms4py提出的解决方案,因为它们不会重复使用len
函数,而且在我看来更具有Python风格。