Как выполнять проверку в словаре по ключу и изменять значение
Задался сделать таблицу лидеров.
Код записывает новый ключ, но не сравнивает был ли такой ключ уже введен ранее.
Как сделать чтобы проверка прошла по ключам и при наличии такого ключа у него значение увеличивалось на единицу.
Заранее спасибо.
dict_sample={}
with open('myfile.txt', 'a', encoding='utf-8') as my_file:
f = open('myfile.txt','a')
#Добавление нового участника
winn = input('Введите имя победителя:')
#Проверка победителя
f = open('myfile.txt')
if winn in dict_sample:
print('есть повтор')
dict_sample[winn] += 1
print(winn, dict_sample[winn])
else:
print(' повтора нет')
addon = {winn: 1}
dict_sample.update(addon)
my_file.write(str(dict_sample))
print('Вы ввели', dict_sample)
f.close()
#Вывод победителей
f = open('myfile.txt')
while True:
line = f.readline()
if len(line) == 0:
break
print(line, end='')
f.close()
Ответы (1 шт):
Автор решения: Lispom
→ Ссылка
Итак я сделал сам. Спасибо ребят за советы.
#Открытие файла и его чтение
f = open('tablleaderboard.txt')
welcome = f.readline()
f.close()
winn=input('Введите имя победителя:' )
#Преобразовываем стринг в словарь нужно чтобы было тире в файле например asd-1
welcome_dict=dict(((a.strip(), int(b.strip()))) for a,b, in(element.split('-') for element in welcome.split(',')))
print(welcome_dict,'словарь из стринги')
# проверка победителя
if winn in welcome_dict:
print('есть повтор')
welcome_dict[winn] += 1
print('победител',winn,'его рейтинг', welcome_dict[winn])
else:
print(' повтора нет')
addon = {winn: 1}
welcome_dict.update(addon)
print('Вы ввели', welcome_dict,'словарь с новым значением')
#сортировка
welcome_dict_sort = dict(sorted(welcome_dict.items(), key=lambda item: item[1]))
print(welcome_dict_sort)
#Преобразует словарь в строку
s = ','.join(f'{k} {v}' for k, v in welcome_dict_sort.items())
print(s,'Стринговое значение с пробелами')
welcome_string = s.replace(" ", "-")
print(welcome_string,'стринговое значение с тире')
#обновление
f = open('tablleaderboard.txt','w')
f.write(str(welcome_string))
f.close()