gpt4 book ai didi

python - 在 Python 中随机改组字典

转载 作者:行者123 更新时间:2023-12-03 14:30:34 25 4
gpt4 key购买 nike

好吧,问题是,我需要在 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 ("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

最佳答案

你不能重新整理字典。您可以做的是创建一个字典键的列表并对其进行洗牌,以实现访问字典内容的新任意顺序:

>>> 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 - 在 Python 中随机改组字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19895028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com