【问题标题】:does this if statement qualify as checking for an increase in set size?这个 if 语句是否有资格检查集合大小的增加?
【发布时间】:2014-12-15 22:52:54
【问题描述】:

下面的 if 语句是否满足这个条件:

如果集合的大小增加了(表明这个词之前没有被处理过),将这个词作为键添加到字典中,值为集合的新长度

还是我找错树了?

s = set()
d = dict()

text = input("Your text here: ")
for word in text.strip().split():
    if word not in s:
        s.add(word)
        d[word] = len(s)

print(d)

【问题讨论】:

  • 你想做什么?
  • s = set(text.strip().split()) 然后d = {w : len(w) for w in s}
  • 是的,符合第二段的要求。
  • 如果实际上不需要检查长度那么你的代码会做它应该做的事情实际上是多余的。

标签: python dictionary set


【解决方案1】:

不,我认为这不太对。听起来您应该这样做:

  1. 将单词添加到集合中。
  2. 测试其长度是否增加。
  3. 如果是的话,将单词添加到字典中。

您的代码应如下所示:

s = set()
d = dict()

text = input("Your text here: ")
for word in text.strip().split():
    old_len = len(s)
    s.add(word)
    new_len = len(s)
    if new_len > old_len:
        d[word] = len(s)

print(d)

【讨论】:

  • 为什么是old_len new_len?你不能简单地检查if word in s吗?看起来更干净了...
  • @ReutSharabani - 确实如此。但是 OP 需要遵循他的任务的指导方针。 :)
【解决方案2】:

也许是一种更简单的方法

d = dict()
for word in raw_input('enter:').strip().split():
    if word not in d:
        d[word]=len(word)

print d.keys()

【讨论】:

  • 是的,我在 s/not in d 方法中尝试了 if 词,并被告知关闭但没有雪茄,他们想检查集合大小的增加而没有提及 dict,@iCodez 是正确的我相信
  • 我不是 100% 确定我理解你所说的设置大小是什么意思? dict 中的元素数量?
  • 我的意思是 len(set),有歧义请见谅
  • 好的,所以一个集合是一个词?在这种情况下,忽略长度,只关注单词的内容(就像我的回答一样)。如果单词不在 dict() 中,则长度无关紧要。两个甚至相差一个字符的单词都将返回“不在”并导致添加该单词。希望这会有所帮助。
猜你喜欢
  • 2022-11-17
  • 1970-01-01
  • 2021-04-03
  • 2016-08-08
  • 2018-03-02
  • 2015-10-27
  • 2023-02-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多