簡體   English   中英

加入兩個不同大小的列表以在 python 中創建一個新字典

[英]joining two lists of different sizes to create a new dictionary in python

我正在嘗試使用符號及其值遞歸地制作一副牌,並且我可以創建代碼以通過迭代,但它不會更新以創建所有 52 張牌。 我嘗試使用不同的更新方法,但由於我的編碼錯誤,它們無法正常工作。

test_values = ["♠", "♣", "♥", "♦"]
test_keys = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']


# Printing original keys-value lists
print ("Original key list is : " + str(test_keys))
print ("Original value list is : " + str(test_values))


new_dict = {}

for key in test_keys:
    for value in test_values:
        res[key] = value
        new_dict = {**new_dict, **res}

# Printing resultant dictionary
print ("Resultant dictionary is : " +  str(res))
print(new_dict)

輸出:

{'A': '♦', '2': '♦', '3': '♦', '4': '♦', '5': '♦', '6': '♦', '7': '♦', '8': '♦', '9': '♦', '10': '♦', 'J': '♦', 'Q': '♦', 'K': '♦'}

為什么只創建最后一個套裝?

您可能想要創建所有卡片的列表,而不是字典。 這是一種創建元組列表的方法:

test_values = ["♠", "♣", "♥", "♦"]
test_keys = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']

# Printing original keys-value lists
print ("Original key list is : " + str(test_keys))
print ("Original value list is : " + str(test_values))

cards = []

for key in test_keys:
    for value in test_values:
        cards.append(key + value)

# Printing resultant list
print(cards)

這給出了輸出:

['A♠', 'A♣', 'A♥', 'A♦', '2♠', '2♣', '2♥', '2♦', '3♠', '3♣', '3♥', '3♦', '4♠', '4♣', '4♥', '4♦', '5♠', '5♣', '5♥', '5♦', '6♠', '6♣', '6♥', '6♦', '7♠', '7♣', '7♥', '7♦', '8♠', '8♣', '8♥', '8♦', '9♠', '9♣', '9♥', '9♦', '10♠', '10♣', '10♥', '10♦', 'J♠', 'J♣', 'J♥', 'J♦', 'Q♠', 'Q♣', 'Q♥', 'Q♦', 'K♠', 'K♣', 'K♥', 'K♦']

在您的解決方案的字典中只創建了最后一個花色的原因是因為字典鍵只能保存一個值。 當您映射 A → ♠ 時,這會創建字典{'A': '♠'} 然后映射 A → ♣ 時,這會覆蓋'A'的初始值,將字典更改為{'A': '♣'}

暫無
暫無

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

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