Python 搜索字典中的键是否具有2或更大的值
函数histogram返回一个字典,其中键是字母,值是该字母在传递给它的参数中出现的次数Python 搜索字典中的键是否具有2或更大的值,python,dictionary,Python,Dictionary,函数histogram返回一个字典,其中键是字母,值是该字母在传递给它的参数中出现的次数 def histogram(s): d = dict() for c in s: if c not in d: d[c] = 1 else: d[c] += 1 return d 我希望函数有重复项使用直方图。然后搜索返回的字典,检查是否有大于1的值,返回True
def histogram(s):
d = dict()
for c in s:
if c not in d:
d[c] = 1
else:
d[c] += 1
return d
我希望函数有重复项
使用直方图。然后搜索返回的字典,检查是否有大于1的值,返回True
或False
def has_duplicates(t):
histogram(t)
我很难访问通过直方图返回的字典中的值。类似于:
def has_duplicates(t):
d = histogram(t)
duplicates = [key for key, value in d.items() if value > 1]
return True if duplicates else False
# or just: return bool(duplicates)
像这样:
def has_duplicates(t):
d = histogram(t)
duplicates = [key for key, value in d.items() if value > 1]
return True if duplicates else False
# or just: return bool(duplicates)
- 您没有将
分配给直方图(t)
函数中的任何内容has\u duplicates
- 你不需要重新发明一个轮子:它会为你做的
from collections import Counter
def has_duplicates(s):
counter = Counter(s)
return {key: value > 1 for key, value in counter.items()}
has_duplicates([1, 2, 7, 2, 2])
# => {1: False, 2: True, 7: False}
如果您指的是单个True
如果检测到任何重复项
def has_duplicates(s):
counter = Counter(s)
return any(value > 1 for value in counter.values())
has_duplicates([1, 2, 7, 2, 2])
# => True
- 您没有将
分配给直方图(t)
函数中的任何内容has\u duplicates
- 你不需要重新发明一个轮子:它会为你做的
from collections import Counter
def has_duplicates(s):
counter = Counter(s)
return {key: value > 1 for key, value in counter.items()}
has_duplicates([1, 2, 7, 2, 2])
# => {1: False, 2: True, 7: False}
如果您指的是单个True
如果检测到任何重复项
def has_duplicates(s):
counter = Counter(s)
return any(value > 1 for value in counter.values())
has_duplicates([1, 2, 7, 2, 2])
# => True
假设它是python 3
s={a:1,b:3,c:2,d:4,e:1}
s_new={k:v代表k,s.items()中的v如果v>1}
打印(s_新)
结果:
{'d':4,'b':3,'c':2}
对于Python2,使用iteritems()
假设其为Python3
s={a:1,b:3,c:2,d:4,e:1}
s_new={k:v代表k,s.items()中的v如果v>1}
打印(s_新)
结果:
{'d':4,'b':3,'c':2}
对于Python 2,使用
iteritems()
def has_duplicates(t):
for v in t.values():
if v > 1:
return True
return False
collections.Counter
但是,在计算histogram()中的字符时,计数器非常有用。
如果您只关心是否有重复的字符,那么当您先前发现重复的字符时,就没有理由在整个字典中循环:
def has_duplicates(t):
for v in t.values():
if v > 1:
return True
return False
collections.Counter
但是,它对于计算直方图()中的字符非常有用。
您可以在上面的帖子中找到问题的答案
但是,如果您的目标只是检查任何重复的字符(或对象),那么这里有另一种方法,您可以考虑使用少量代码:
set(t)将t中的字符串转换为一组字符。在转换过程中,所有重复项都会自动删除,因为集合只能保存每个对象一次。如果没有重复项,则将初始字符串的长度与所创建集合中的项数进行比较将返回True,如果在集合创建过程中至少删除了一个重复项,则返回False。这也适用于其他序列
注意:负面比较“!=”用于使函数对重复进行肯定检查,而不是对无重复进行否定检查
Michael您可以在上面的帖子中找到问题的好答案
但是,如果您的目标只是检查任何重复的字符(或对象),那么这里有另一种方法,您可以考虑使用少量代码:
set(t)将t中的字符串转换为一组字符。在转换过程中,所有重复项都会自动删除,因为集合只能保存每个对象一次。如果没有重复项,则将初始字符串的长度与所创建集合中的项数进行比较将返回True,如果在集合创建过程中至少删除了一个重复项,则返回False。这也适用于其他序列
注意:负面比较“!=”用于使函数对重复进行肯定检查,而不是对无重复进行否定检查
Michael将此添加到has_duplicates函数返回len([v代表k,v在直方图(t)中。items()如果v>1])>1
@John Jefferson Bautista迭代这些项有特殊原因吗?如果您只想检查值,可以使用dict的方法.values()。@pistol2myhead这不是对您的问题的回答,而是一条建议:如果您的唯一目标是检查并执行一些操作,如果至少有一个字符出现两次,那么您可以使用短路。也就是说,在IF条件的ELSE块中加一个中断,因为一旦遇到第二种情况,结果就很清楚了。@MichaelS。你可以给op加上标签。我只是为了更好的格式编辑了这个问题。把它添加到has_duplicates函数return len([v代表k,v在直方图(t)中。items()如果v>1])>1
@John Jefferson Bautista迭代这些项有什么特殊原因吗?如果您只想检查值,可以使用dict的方法.values()。@pistol2myhead这不是对您的问题的回答,而是一条建议:如果您的唯一目标是检查并执行一些操作,如果至少有一个字符出现两次,那么您可以使用短路。也就是说,在IF条件的ELSE块中加一个中断,因为一旦遇到第二种情况,结果就很清楚了。@MichaelS。你可以给op加上标签。我只是为了更好的格式编辑了这个问题。计数器
对于在直方图
中计数有意义,而不是在计数完成后查找重复项,否?@EndreBoth计数器
是直方图
的替代品-它们做同样的事情。它不用于“内部”柱状图
。您是对的,计数器完全不需要单独的功能。计数器
对于在柱状图
中计数有意义,而不是在计数完成后查找重复项,否?@EndreBoth计数器
是直方图
的替代品-它们的作用相同。它不适用于“内部”柱状图
。您是对的,计数器完全不需要单独的函数。仅使用havin就有太多的开销