7

这个问题类似于Python——在字典中查找最长(最多的词)键——但我需要纯字符数。

示例输入:

d = {'group 1': 1, 'group 1000': 0}

输出:

10
4

3 回答 3

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

或者

>>> max(map(len, d))
于 2012-06-05T10:33:20.233 回答
11

替代方案,与@jamylak 的解决方案一样快,而且更 Pythonic:

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
于 2012-06-05T11:15:11.073 回答
10
>>> d = {'group 1': 1, 'group 1000': 0}
>>> len(max(d, key=len))
10

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

于 2012-06-05T10:28:17.237 回答