如何将数组中的值随机分配给dict.key?

时间:2018-05-15 18:56:14

标签: python dictionary

我试图编写一些代码,将一维数组中的值随机分配给dict中的键,然后以随机顺序调用这两个键。它不是很优雅,但到目前为止我通过创建一个数组来完成这个:

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

随机化其内容:

shuffle(array)

然后将(now shuffled)数组中的不同索引范围分配给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_setsecond_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 :(得分:0)

通过使用== get.dict()引用a和b,然后用elif替换else函数来解决问题:

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')

将此留给未来的用户:)