簡體   English   中英

如何將字典中的值提取到數組中

[英]How to pull out values from a dictionary into an array

spades = ['2S','3S','4S','5S','6S','7S','8S','9S','10S','JS','QS','KS','AS']
hearts = ['2H','3H','4H','5H','6H','7H','8H','9H','10H','JH','QH','KH','AH']
clubs = ['2C','3C','4C','5C','6C','7C','8C','9C','10C','JC','QC','KC','AC']
diamonds = ['2D','3D','4D','5D','6D','7D','8D','9D','10D','JD','QD','KD','AD']
allCards = spades + hearts + clubs + diamonds

import random
random.shuffle(allCards)

bot1 = [allCards.pop() for i in range(2)]
print(bot1)
cardVal = {'2S':1,'3S':2,'4S':3,'5S': 4,'6S':5,'7S':6,'8S':7,'9S':8,'10S':9,'JS':10,'QS':11,'KS':12,'AS':13,
    '2H':1,'3H':2,'4H':3,'5H': 4,'6H':5,'7H':6,'8H':7,'9H':8,'10H':9,'JH':10,'QH':11,'KH':12,'AH':13,
    '2C':1,'3C':2,'4C':3,'5C': 4,'6C':5,'7C':6,'8C':7,'9C':8,'10C':9,'JC':10,'QC':11,'KC':12,'AC':13,
    '2D':1,'3D':2,'4D':3,'5D': 4,'6D':5,'7D':6,'8D':7,'9D':8,'10D':9,'JD':10,'QD':11,'KD':12,'AD':13}

for i in bot1:
    print(cardVal[i])
    bot1hand = [cardVal[i]]
print(bot1hand)

我想將bot1擁有的卡的值放在一個單獨的數組中,但是遇到了問題。 我總是將兩個值打印在單獨的行上,而數組bot1hand僅存儲兩個值的最后一個值。

例如:

>>> 
['AC', '5C']
13
4
[4]
>>> 

您的問題就在這里:

for i in bot1:
    print(cardVal[i])
    bot1hand = [cardVal[i]]
print(bot1hand)

特別是這一行:

bot1hand = [cardVal[i]]

您一直在覆蓋自己的價值觀,因為您實際上沒有正確地添加到列表中。 實際上,您的bot1hand並未被視為列表。

您首先要做的是將其初始化為循環外的列表:

bot1hand = []

然后在循環中,在其上使用append方法:

bot1hand.append(cardVal[i])

因此,您最后的代碼塊應如下所示:

bot1hand = []
for i in bot1:
    print(cardVal[i])
    bot1hand.append(cardVal[i])
print(bot1hand)

作為代碼中的最后一個重構步驟,您實際上可以執行@NathanielFord建議的操作,即使用理解(我已經看到您已經在代碼中使用過,因此您必須已經熟悉它)。 現在我可以將這個答案中的那部分代碼簡化為:

bot1hand = [cardVal[i] for i in bot1]

您的for循環就是問題所在。 您可能想嘗試列表理解

bot1hand = [cardVal[i] for i in bot1]
print(bot1hand)

(我假設print語句用於調試目的。)

列表理解處理為您實際構建列表的責任。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM