標題不太好,抱歉。
我是 python 新手,我正在玩字典以加深對它們的理解。
為了練習,我正在組建一支由 11 名球員組成的足球隊。每個玩家都是存盤在串列中的字典。
所以每個玩家都有自己的字典,但所有的鍵都是一樣的,只是值會改變。
我已經確定了球員的位置,現在我想添加球員的年齡。這就是我所擁有的:
footballers = []
for populating in range(11): #populating = to get footballers
new_player = {"position": 'goalkeeper',}
footballers.append(new_player)
for baller in footballers[1:5]:
baller["position"] = 'defender'
print (baller)
for player in footballers[5:8]:
player["position"] = "midfield"
for player in footballers[8:11]:
player["position"] = "forward"
import random
for baller in footballers:
baller["age"] = random.randint (17, 34)
print (baller)
這行得通,我得到了想要的結果。但是,每次我運行代碼時,年齡都會發生變化。
我將如何使它運行一次并且密鑰的值保持不變?
我知道我可以自己輸入年齡,但如果我想填充整個聯盟,我不會那樣做。
我嘗試了其他方法,例如在另一個字典串列中制作年齡:值,但我不知道如何將 2 放在一起。
我在這里缺少什么嗎?
謝謝
uj5u.com熱心網友回復:
種子允許在每次呼叫時“隨機”填充具有相同值的串列。
將種子放在回圈之外很重要。
import random # good practice is to have imports at the top
footballers = []
for populating in range(11):
new_player = {"position": 'goalkeeper',}
footballers.append(new_player)
for baller in footballers[1:5]:
baller["position"] = 'defender'
print (baller)
for player in footballers[5:8]:
player["position"] = "midfield"
for player in footballers[8:11]:
player["position"] = "forward"
random.seed(42)
# the correct position is anywhere before the loop to have the same ages every call
for baller in footballers:
## random.seed(42) # Wrong position - will result in each player have the same age
baller["age"] = random.randint (17, 34)
print (baller)
筆記:
- 當您在 jupyter 中運行代碼時,
random.seed()
需要與隨機呼叫位于同一單元格中 - 42 只是一個例子,你可以使用任何正整數
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/504899.html
上一篇:帶有for_each變數的Terraformtemplate_file資源
下一篇:在現有字典之上添加另一層?