Python - 在字典中查找最长(大多数单词)键

时间:2010-12-01 04:18:32

标签: python dictionary key

有没有办法快速查询字典对象,以便找到包含最多单词的密钥(所有密钥都是字符串类型)?

即,如果具有最大键的项目有五个单词{'这是最大的键':3},我怎样才能快速查询dict并返回int'5'?

最佳, 乔治娜

7 个答案:

答案 0 :(得分:2)

这将为您提供密钥:

max(d, key=lambda x: len(x.split()))

如果你想要尺寸:

max(len(x.split()) for x in d)

答案 1 :(得分:1)

max of - 每个键的单词数:

max(len(k.split()) for k in d.keys())

答案 2 :(得分:1)

longest=max(d.keys(), key=lambda s:len(s.split()))
len(longest.split())

答案 3 :(得分:0)

max(len(i.split()) for i in d.iterkeys())

答案 4 :(得分:0)

答案是否定的。

如果您想知道是否有快速输入的解决方案,那么请务必查看其他回复。但是没有一个会在大型词典上快速运行,我认为这是你问题的精神。

如果这确实是您需要经常做的事情,您应该修改代码中添加和删除字典中的键的点,以便它们还保留一堆键,按字数排序。

答案 5 :(得分:0)

如果你能保证......

  • 没有前导或尾随空格
  • 单词只用一个空格分隔

<强>计数

max(key.count(' ') for key in d) + 1
  • 分配的新对象几乎为零,iter和一些整数
  • 这使用更少的内存,几乎是使用拆分的两倍。

如果你不能......

<强>分割

max(len(key.split()) for key in d)
  • 接受不规则的键值
  • 尽管计数方法的速度是1/2,但它并不慢。

答案 6 :(得分:-1)

没有捷径。简单的方法:

import re
max([len(re.split('\s+', k)) for k in d.keys()])