Как сгенерировать ключ с помощью randint которого нет в списке
У меня есть переменная в которой хранится список с ключами строкового типа 412, 413.
keys_now = ['412', '413']
Мне необходимо сгенерировать новый ключ в диапазоне от 411 до 415, то есть, чтобы новый ключ не был в списке keys_now.
У меня как-то ранее получилось это сделать, но я уже не помню, как правильно всё написать.
Сейчас у меня есть функция generateKeyForNewCategory(categories), которая неправильно работает.
def generateKeyForNewCategory(categories):
categories_Keys = getCategoriesKeys(categories)
for _ in categories_Keys:
random_category_key = str(randint(411, 415))
if random_category_key not in categories_Keys:
new_category_key = random_category_key
print(new_category_key)
Ответы (2 шт):
Автор решения: Maxim Chyorny
→ Ссылка
Это можно сделать так:
async def generateKeyForNewCategory():
categories_Keys = [] # тут существующие ключи
for _ in categories_Keys:
random_category_key = str(randint(411, 415))
if random_category_key not in categories_Keys:
new_category_key = random_category_key
return new_category_key
Автор решения: Tehnorobot
→ Ссылка
Я предложу ещё один вариант (без функции getCategoriesKeys и с циклом while) :
from random import randint
lst = ['412', '413']
def generateKeyForNewCategory(categories):
while True:
random_category_key = str(randint(411, 415))
if random_category_key not in categories:
new_category_key = random_category_key
categories.append(new_category_key)
break
return new_category_key # также можно вывести список с добавленным значением
print(generateKeyForNewCategory(lst))
Кстати, можно и рекурсией обойтись:
from random import randint
lst = ['412', '413']
def generateKeyForNewCategory(categories):
random_category_key = str(randint(411, 415))
if random_category_key not in categories:
new_category_key = random_category_key
categories.append(new_category_key)
return new_category_key
else:
return generateKeyForNewCategory(categories)
print(generateKeyForNewCategory(lst))