Как случайным образом присваивать значения в массиве dict.key?

-6

Я пытаюсь написать код, который случайным образом присваивает значения в 1D-массиве ключам в dict, а затем вызывает оба ключа в случайном порядке. Это не очень элегантно, но до сих пор я сделал это, создав массив:

array = [0,1,2,3,4,5,6]

рандомизация его содержимого:

shuffle(array)

а затем назначая разные диапазоны индексов в (теперь перетасованном) массиве клавишам в dict:

a = array[0:2]
b = array[3:5]
dict = {'cond_A':a,'cond_B':b}

код надежно работает до этой точки (проверяется путем печати dict.get('cond_A') и dict.get('cond_B')

Тем не менее, я затем пытаюсь вызвать значения из каждого ключа в виде отдельных наборов, представленных в произвольном порядке, с помощью:

x = random.choice(dict.keys())
first_set = dict.get(x)
if x == dict['cond_A']:
second_set = dict.get('cond_B')
else:
second_set = dict.get('cond_A')

Иногда это работает в том, что first_set и second_set содержат разные (неперекрывающиеся) значения, как и предполагалось. Однако в половине случаев оба набора содержат одинаковые значения (которые не соответствуют печатным значениям dict.get от ранее). Например, результат может выглядеть так, как при успешном запуске:

a == [1,3,4]
b == [6,2,5]

first_set == [1,3,4]
second_set == [6,2,5]

но в следующем прогоне это может выглядеть так:

a == [1,3,4]
b == [6,2,5]

first_set == [1,3,4]
second_set == [1,3,4]

Очевидно, что функция if-else работает не так, как предполагалось, но я понятия не имею, почему. Кто-нибудь знает, почему это может быть так? Заранее благодарю за любую помощь!

спросил(а) 2018-05-15T21:56:00+03:00 2 года, 5 месяцев назад
0
122

Исправлена проблема, ссылаясь на a и b с помощью == get.dict() а затем заменяя функцию else на elif:

x = random.choice(dict.keys())
first_set = dict.get(x)

if first_set == dict.get('cond_A'):
second_set = dict.get('cond_B')
elif first_set == dict.get('cond_B'):
second_set = dict.get('cond_A')

Оставляя это здесь для будущих пользователей :)

ответил(а) 2018-05-15T22:11:00+03:00 2 года, 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема