Как случайным образом присвоить значения в массиве dict.key? - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь написать некоторый код, который случайным образом присваивает значения в одномерном массиве ключам в 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 не работает должным образом, но я понятия не имею, почему. Кто-нибудь знает, почему это может иметь место? Заранее спасибо за любую помощь!

1 Ответ

0 голосов
/ 15 мая 2018

Исправлена ​​проблема путем ссылки 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')

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...