リストをランダムにシャッフル後各リストの最初の値(0番目)が連続で同じものにならないコードを作成したいのですができません。教えてもらえると助かります。
python
1import random 2 3li = {'a':16,'b':29,'c':35,'d':55,'e':57,'n':70,'o':72,'p':101,'q':103} 4 5n = int(input()) 6 7for num in range(n): 8 9 def shuffleDict(d): 10 keys = list(d.keys()) 11 random.shuffle(keys) 12 [(key, d[key]) for key in keys] 13 random.shuffle(keys) 14 keys = [(key, d[key]) for key in keys] 15 return dict(keys) 16 17 num_list = list(shuffleDict(li).keys()) 18 19 def first_key(num): 20 return num_list[0] 21 22 zf = num_list[:2] 23 24 if first_key(num) == first_key(num+1): 25 26 def re_shuffleDict(d): 27 keys = list(d.keys()) 28 random.shuffle(keys) 29 [(key, d[key]) for key in keys] 30 random.shuffle(keys) 31 keys = [(key, d[key]) for key in keys] 32 return dict(keys) 33 34 re_num_list = list(re_shuffleDict(li).keys()) 35 re_zf = re_num_list[:2] 36 37 print(re_zf) 38 39 else: 40 print(zf)
この結果n=2の時
['a', 'b']
['a', 'p']
となってしまいました...
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。