在字典中找到最长的(字符串)键

7

1
建立一张表格?请解释。 - Karl Knechtel
3个回答

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

或者

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

1
@jamylak - 而且对于你的两个元素字典,这两种方法都比你的解决方案慢... - eumiro
1
@jamylak,你的解决方案更快。 - Gandaro
@eumiro 好的,那我就把它留在这里了,但是这是更好的答案。 - jamylak

11

另一种方案,与@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

4
我同意这是正确的方法。注意对于Python 3用户,“map”变为“imap”。 - jamylak
我似乎找不到itertools中imap的文档。这些信息已经过时了吗? - beruic
1
@beruic imap已更名为map,并且是Python3中的内置函数。您可以简单地使用max(map(len, d)) - Lord Elrond

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

这个解决方案是最快的,但我更喜欢@eumiro和@ms4py提出的解决方案,因为它们不会重复使用len函数,而且在我看来更具有Python风格。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接