在Python中随机洗牌 [英] Randomly shuffling a dictionary in Python

查看:191
本文介绍了在Python中随机洗牌的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗯,事情是,我需要在python中使用字典,但我意识到我不能随机洗牌。我必须随机洗牌,并将值分配给同一个字典。任何帮助将不胜感激。

  import random 
i = 1
name =
helper = []
number_of_com = 0
win_0 = []
win_1 = []
win_2 = []
win_3 = []
win_4 = [ ]
win_5 = []
win_6 = []
win_7 = []
win_8 = []
win_9 = []
win_10 = []
print(欢迎来到瑞士回合计算器,该项目由Enes Kristo制作)
number_of_com = int(输入(请输入竞争对手的人数:\\\
))
如果number_of_com< = 16:
loop = 3
elif number_of_com< = 32:
loop = 4
elif number_of_com< = 64:
loop = 5
elif number_of_com< = 128:
loop = 6
elif number_of_com< = 256:
loop = 7
elif number_of_com< = 512:
loop = 8
elif number_of_com< = 1024:
loop = 9
else:
loop = 10
而i< = number_of_com:
name = str(input(竞争对手名称+ str(i)+:\\\
))
helper.append([name,0,0])
i + = 1
def odd():
b = 0
while b =(number_of_com - 2):
helper_1 = helper [b]
b + = 1
helper_2 = helper [b]
print(Player+ str(helper_1 [0])+vs vs str(helper_2 [0])+。)
b + = 1
helper_3 = helper [(number_of_com-1)]
打印(str(helper_3 [0])+免费获胜)
helper_3 [1] + = 1
helper [(number_of_com-1)] = helper_3
b = 0
而b <=(number_of_com - 2) :
helper_1 = helper [b]
b + = 1
helper_2 = helper [b]
print(在播放器之间的匹配+ str(helper_1 [0])+ + str(helper_2 [0])+谁赢了?)
a = int(输入(如果播放器输入1+ str(helper_1 [0])+赢或2如果玩家 + str(helper_2 [0])+won.\\\
))
如果一个== 1或一个== 2:
如果一个== 1:
helper_1 [1 ] + = 1
helper_2 [2] + = 1
b - = 1
helper [b] = helper_1
b + = 1
helper [b] = helper_2
else:
helper_1 [2] + = 1
helper_2 [1] + = 1
b - = 1
helper [b] = helper_1
b + = 1
helper [b ] = helper_2
else:
print(输入正确的数字)
b - = 1
继续
b + = 1
random.shuffle助手)
v = 0
而v < number_of_com:
helper_1 = helper [v]
如果helper_1 [1] == 0:
win_0.append(helper_1)
elif helper_1 [1] == 1:
win_1.append(helper_1)
elif helper_1 [1] == 2:
win_2.append(helper_1)
elif helper_1 [1] == 3:
win_3。 append(helper_1)
elif helper_1 [1] == 4:
win_4.append(helper_1)
elif helper_1 [1] == 5:
win_5.append(helper_1)
elif helper_1 [1] == 6:
win_6.append(helper_1)
elif helper_1 [1] == 7:
win_7.append(helper_1)
elif helper_1 [1] == 8:
win_8.append(helper_1)
elif helper_1 [1] == 9:
win_9.append(helper_1)
elif helper_1 [1 ] == 10:
win_10.append(helper_1)
v + = 1
random.shuffle(win_0)
random.shuffle(win_1)
random.shuffle win_2)
random.shuffle(win_3)
random.shuffle(win_4)
random.shuffle(win_5)
random.shuffle(win_6)
random.shuffle(win_7)
random.shuffle(win_8)
random.shuffle(win_9)
random.shuffle(win_10)
while len(helper)> 0:
helper.pop()
helper.append(win_10)
helper.append(win_9)
helper.append(win_8)
helper.append(win_7 )
helper.append(win_6)
helper.append(win_5)
helper.append(win_4)
helper.append(win_3)
helper.append(win_2 )
helper.append(win_1)
helper.append(win_0)
def even():
b = 0
while b <=(number_of_com - 2) :
helper_1 = helper [b]
b + = 1
helper_2 = helper [b]
print(Player+ str(helper_1 [0])+是vs播放器+ str(helper_2 [0])+。)
b + = 1
b = 0
while b <=(number_of_com - 2):
helper_1 = helper [ b]
b + = 1
helper_2 = helper [b]
print(在播放器之间的匹配+ str(helper_1 [0])+和播放器+ str(helper_2 [ 0])+谁赢了)
a = int(输入(如果播放器输入1+ str(helper_1 [0])+赢或2如果播放器+ str (helper_2 [0])+won。))
如果一个== 1或一个== 2:
如果一个== 1:
helper_1 [1] + = 1
helper_2 [2] + = 1
b - = 1
helper [b] = helper_1
b + = 1
helper [b] = helper_2
else:
helper_1 [2] + = 1
helper_2 [1] + = 1
b - = 1
helper [b] = helper_1
b + = 1
帮助[b] = helper_2
其他:
打印(输入正确的数字)
b - = 1
继续
b + = 1
随机.shuffle(helper)
v = 0
while v< number_of_com:
helper_1 = helper [v]
如果helper_1 [1] == 0:
win_0.append(helper_1)
elif helper_1 [1] == 1:
win_1.append(helper_1)
elif helper_1 [1] == 2:
win_2.append(helper_1)
elif helper_1 [1] == 3:
win_3。 append(helper_1)
elif helper_1 [1] == 4:
win_4.append(helper_1)
elif helper_1 [1] == 5:
win_5.append(helper_1)
elif helper_1 [1] == 6:
win_6.append(helper_1)
elif helper_1 [1] == 7:
win_7.append(helper_1)
elif helper_1 [1] == 8:
win_8.append(helper_1)
elif helper_1 [1] == 9:
win_9.append(helper_1)
elif helper_1 [1 ] == 10:
win_10.append(helper_1)
v + = 1
random.shuffle(win_0)
random.shuffle(win_1)
random.shuffle win_2)
random.shuffle(win_3)
random.shuffle(win_4)
random.shuffle(win_5)
random.shuffle(win_6)
random.shuffle(win_7)
random.shuffle(win_8)
random.shuffle(win_9)
random.shuffle(win_10)
while len(helper)> 0:
helper.pop()
helper.append(win_10)
helper.append(win_9)
helper.append(win_8)
helper.append(win_7 )
helper.append(win_6)
helper.append(win_5)
helper.append(win_4)
helper.append(win_3)
helper.append(win_2 )
helper.append(win_1)
helper.append(win_0)
如果number_of_com%2 == 0:
c = 1
而c <=循环:
even()
c + = 1
else:
c = 1
while c <= loop:
odd()
c + 1


解决方案

你不能重新洗牌。您可以做的是创建一个字典的键列表,然后shuffle ,以达到访问字典内容的新任意顺序:

 >>>导入随机
>>>> d = {1:2,3:4,5:6,7:8,9:10}
>>> d
{1:2,3:4,9:10,5:6,7:8}
>>> keys = list(d.keys())#Python 3;在Python中使用keys = d.keys()2
>>> random.shuffle(keys)
>>> [(键,d [键])键]
[(1,2),(5,6),(7,8),(9,10),(3,4)]
>>>> random.shuffle(keys)
>>>键(key,d [key])
[(9,10),(3,4),(1,2),(7,8),(5,6)]
>>>> random.shuffle(keys)
>>>键(key,d [key])
[(1,2),(7,8),(3,4),(5,6),(9,10)]


Well, the thing is, I had the need to use dictionaries in python, but I realized i couldn't randomly shuffle them. I have to randomly shuffle it, and assign the values to the same dictionary. Any help would be appreciated.

import random
i = 1
name = ""
helper = []
number_of_com = 0
win_0 = []
win_1 = []
win_2 = []
win_3 = []
win_4 = []
win_5 = []
win_6 = []
win_7 = []
win_8 = []
win_9 = []
win_10 = []
print ("Welcome to the Swiss Round Calculator. This project was made by Enes Kristo")
number_of_com = int(input("Please enter the number of the competitors:\n"))
if number_of_com <= 16:
    loop = 3
elif number_of_com <= 32:
    loop = 4
elif number_of_com <= 64:
    loop = 5
elif number_of_com <= 128:
    loop = 6
elif number_of_com <= 256:
    loop = 7
elif number_of_com <= 512:
    loop = 8
elif number_of_com <= 1024:
    loop = 9
else:
    loop = 10
while i <= number_of_com:
    name = str(input("Name of competitor nr."+str(i)+":\n"))
    helper.append([name, 0, 0])
    i += 1
def odd():
    b = 0
    while b <= (number_of_com - 2):
        helper_1 = helper[b]
        b += 1
        helper_2 = helper[b]
        print ("Player " + str(helper_1[0]) + " is vs player " + str(helper_2[0]) + ".")
        b += 1
    helper_3 = helper[(number_of_com-1)]
    print (str(helper_3[0])+" gets a free win.")
    helper_3[1] += 1
    helper[(number_of_com-1)] = helper_3
    b = 0
    while b <= (number_of_com - 2):
        helper_1 = helper[b]
        b += 1
        helper_2 = helper[b]
        print("In the match between player " + str(helper_1[0]) + " and player " +str(helper_2[0]) + " who won?")
        a = int(input("Enter 1 if player " + str(helper_1[0]) + " won or 2 if player " + str(helper_2[0]) + " won.\n"))
        if a == 1 or a == 2:
            if a == 1:
                helper_1[1] += 1
                helper_2[2] += 1
                b -= 1
                helper[b] = helper_1
                b += 1
                helper[b] = helper_2
            else:
                helper_1[2] += 1
                helper_2[1] += 1
                b -= 1
                helper[b] = helper_1
                b += 1
                helper[b] = helper_2
        else:
            print("Enter a correct number.")
            b -= 1
            continue
        b += 1
    random.shuffle(helper)
    v = 0
    while v < number_of_com:
        helper_1 = helper[v]
        if helper_1[1] == 0:
            win_0.append(helper_1)
        elif helper_1[1] == 1:
            win_1.append(helper_1)
        elif helper_1[1] == 2:
            win_2.append(helper_1)
        elif helper_1[1] == 3:
            win_3.append(helper_1)
        elif helper_1[1] == 4:
            win_4.append(helper_1)
        elif helper_1[1] == 5:
            win_5.append(helper_1)
        elif helper_1[1] == 6:
            win_6.append(helper_1)
        elif helper_1[1] == 7:
            win_7.append(helper_1)
        elif helper_1[1] == 8:
            win_8.append(helper_1)
        elif helper_1[1] == 9:
            win_9.append(helper_1)
        elif helper_1[1] == 10:
            win_10.append(helper_1)
        v += 1
    random.shuffle(win_0)
    random.shuffle(win_1)
    random.shuffle(win_2)
    random.shuffle(win_3)
    random.shuffle(win_4)
    random.shuffle(win_5)
    random.shuffle(win_6)
    random.shuffle(win_7)
    random.shuffle(win_8)
    random.shuffle(win_9)
    random.shuffle(win_10)
    while len(helper) > 0:
        helper.pop()
    helper.append(win_10)
    helper.append(win_9)
    helper.append(win_8)
    helper.append(win_7)
    helper.append(win_6)
    helper.append(win_5)
    helper.append(win_4)
    helper.append(win_3)
    helper.append(win_2)
    helper.append(win_1)
    helper.append(win_0)
def even():
    b = 0
    while b <= (number_of_com - 2):
        helper_1 = helper[b]
        b += 1
        helper_2 = helper[b]
        print ("Player " + str(helper_1[0]) + " is vs player " +str(helper_2[0]) + ".")
        b += 1
    b = 0
    while b <= (number_of_com - 2):
        helper_1 = helper[b]
        b += 1
        helper_2 = helper[b]
        print("In the match between player " + str(helper_1[0]) + " and player " +str(helper_2[0]) + " who won?")
        a = int(input("Enter 1 if player " + str(helper_1[0]) + " won or 2 if player " + str(helper_2[0]) + " won."))
        if a == 1 or a == 2:
            if a == 1:
                helper_1[1] += 1
                helper_2[2] += 1
                b -= 1
                helper[b] = helper_1
                b += 1
                helper[b] = helper_2
            else:
                helper_1[2] += 1
                helper_2[1] += 1
                b -= 1
                helper[b] = helper_1
                b += 1
                helper[b] = helper_2
        else:
            print("Enter a correct number.")
            b -= 1
            continue
        b += 1
        random.shuffle(helper)
        v = 0
    while v < number_of_com:
        helper_1 = helper[v]
        if helper_1[1] == 0:
            win_0.append(helper_1)
        elif helper_1[1] == 1:
            win_1.append(helper_1)
        elif helper_1[1] == 2:
            win_2.append(helper_1)
        elif helper_1[1] == 3:
            win_3.append(helper_1)
        elif helper_1[1] == 4:
            win_4.append(helper_1)
        elif helper_1[1] == 5:
            win_5.append(helper_1)
        elif helper_1[1] == 6:
            win_6.append(helper_1)
        elif helper_1[1] == 7:
            win_7.append(helper_1)
        elif helper_1[1] == 8:
            win_8.append(helper_1)
        elif helper_1[1] == 9:
            win_9.append(helper_1)
        elif helper_1[1] == 10:
            win_10.append(helper_1)
        v += 1
    random.shuffle(win_0)
    random.shuffle(win_1)
    random.shuffle(win_2)
    random.shuffle(win_3)
    random.shuffle(win_4)
    random.shuffle(win_5)
    random.shuffle(win_6)
    random.shuffle(win_7)
    random.shuffle(win_8)
    random.shuffle(win_9)
    random.shuffle(win_10)
    while len(helper) > 0:
        helper.pop()
    helper.append(win_10)
    helper.append(win_9)
    helper.append(win_8)
    helper.append(win_7)
    helper.append(win_6)
    helper.append(win_5)
    helper.append(win_4)
    helper.append(win_3)
    helper.append(win_2)
    helper.append(win_1)
    helper.append(win_0)
if number_of_com % 2 == 0:
    c = 1
    while c <= loop:
        even()
        c += 1
else:
    c = 1
    while c <= loop:
        odd()
        c += 1

解决方案

You can't reshuffle a dictionary. What you can do is create a list of the dictionary's keys and shuffle that in order to achieve a new arbitrary order in which to access the dictionary's contents:

>>> import random
>>> d = {1:2, 3:4, 5:6, 7:8, 9:10}
>>> d
{1: 2, 3: 4, 9: 10, 5: 6, 7: 8}
>>> keys =  list(d.keys())      # Python 3; use keys = d.keys() in Python 2
>>> random.shuffle(keys)
>>> [(key, d[key]) for key in keys]
[(1, 2), (5, 6), (7, 8), (9, 10), (3, 4)]
>>> random.shuffle(keys)
>>> [(key, d[key]) for key in keys]
[(9, 10), (3, 4), (1, 2), (7, 8), (5, 6)]
>>> random.shuffle(keys)
>>> [(key, d[key]) for key in keys]
[(1, 2), (7, 8), (3, 4), (5, 6), (9, 10)]

这篇关于在Python中随机洗牌的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆