обновить значение в словаре Python, добавив число - PullRequest
0 голосов
/ 15 октября 2018

Я хочу создать программу, которая добавляет имя в словарь, если оно еще не существует, и подсчитывает, сколько раз оно дается в качестве входных данных.Мой код работает, однако, он не добавляет 1 во время итерации.

namelist = {}

def namen():
    while True:
        word = input('Vul een naam in: ')
        if word == '':
            break
        else:
            for name in namelist:
                if word == name:
                    namelist[word] += 1
                # else wasn't properly indented earlier
                else:
                    namelist[word] = 1


print(namen())

print(namelist)

Ответы [ 4 ]

0 голосов
/ 15 октября 2018

Никто не сказал ничего о методе словарей has_key, который, на мой взгляд, является стандартным способом:

namelist = {}

def namen():
    while True:
        word = input('Vul een naam in: ')
        if word == '':
            break
        else:
            if namelist.has_key(word):
                namelist[word] += 1
            else:
                namelist[word] = 1

print(namen())

print(namelist)
0 голосов
/ 15 октября 2018

попробуйте

namelist = {}

def namen():
    while True:
        word = input('Vul een naam in: ')
        if word == '':
            break
        else:
            try:
                namelist[word] += 1
            except:
                namelist[word] = 1

print(namen())

print(namelist)
0 голосов
/ 15 октября 2018

Вместо этого можно использовать метод dict.get, чтобы указать значение по умолчанию для новой записи в dict:

namelist = {}

def namen():
    while True:
        word = input('Vul een naam in: ')
        if word == '':
            break
        else:
            for name in namelist:
                if word == name:
                    namelist[word] = namelist.get(word, 0) + 1
0 голосов
/ 15 октября 2018

Ваша проверка неверна, вам нужно if вместо for, чтобы увидеть, существует ли ключ, тогда вы можете удалить внутренний оператор if

   if name in namelist:
        namelist[word] += 1
    else:
        namelist[word] = 1
...