三行代码  ›  专栏  ›  技术社区  ›  Muffin

特定字典键中的值数

  •  0
  • Muffin  · 技术社区  · 1 月前

    len(synonyms[word])

    这是我的尝试:

    synonyms = {}
    
    while True:
    command = input()
    
    if command == "add":
        first_word = input()
        second_word = input()
        synonyms[second_word] = first_word
        synonyms[first_word] = second_word
    
    elif command == "count":
        word = input()
        print(len(synonyms[word]))
    

    1 回复  |  直到 1 月前
        1
  •  1
  •   Stef    1 月前

    synonyms[second_word] = first_word
    

    在该行上,如果已经有 second_word first_word . 这意味着所有以前的同义词都将丢失,而只保留最后一个同义词。

    相反,您应该显式地使用列表和 .append . 这里有两种方法来解决这个问题 synonyms[second_word] = first_word :

    # FIRST WAY
    if second_word not in synonyms:
        synonyms[second_word] = [first_word]  # create new list with one element
    else:
        synonyms[second_word].append(first_word)  # add one element to existing list
    
    # SECOND WAY
    synonyms.setdefault(second_word, []).append(first_word)  # create new empty list if necessary, and add one element to the list
    

    synonyms = {}
    
    while True:
        command = input().strip()
        if command == "add":
            first_word = input().strip()
            second_word = input().strip()
            synonyms.setdefault(second_word, []).append(first_word)
            synonyms.setdefault(first_word, []).append(second_word)
        elif command == "count":
            word = input().strip()
            print(len(synonyms[word]))
    

    我想补充两点:

    • .setdefault 方法 dict collections.defaultdict 而不是 字典 the documentation on defaultdict ,或这个问题: How does collections.defaultdict work? .
    • 我补充说 .strip() 每次打电话给 input() 输入() 通常以换行符结尾,这很烦人,因为您可能以换行符结尾 'add\n' 而不是 'add' . 字符串方法 .strip() 删除字符串开头和结尾的所有空白字符(空格、制表符和换行符)