簡體   English   中英

如何使用新密鑰將值從一個字典復制到第二個字典?

[英]How do I copy values from one dictionary to a second dictionary with new keys?

我試圖在我的游戲中制作專用於某些類別的武器。 我有一個表格數據庫:

itemsList = {
1: {"name": "Padded Armor",  "armor": 1,  "value": 5, "class": "light"},
2: {"name": "Leather Armor",  "armor": 2,  "value": 10, "class": "light"},
3: {"name": "Studded Leather Armor",  "armor": 3,  "value": 25, "class": "light"},
...
19: {"name": "Dagger", "damage" : int(random.randrange(1, 4)), "value": 2, "Type": "Dagger"},
20: {"name": "Dagger + 1", "damage" : int(random.randrange(1, 4) + 1), "value": 200, "Type": "Dagger"},
21: {"name": "Dagger + 2", "damage" : int(random.randrange(1, 4) + 2), "value": 750, "Type": "Dagger"},
22: {"name": "Dagger + 3", "damage" : int(random.randrange(1, 4) + 3), "value": 2000, "Type": "Dagger"}
}

如果一個班級可以裝備某種武器,我將導入一本新詞典,

character.canEquipWeapon = {}

我想將名稱,損壞,值和類型分配給字典中的一組新鍵,但是,我只想將某些子集(匕首,槌,劍)添加到某些類中。

我努力了

character.canEquipWeapon.update(itemsList[5])

並且只是用每個新值覆蓋字典。 我該怎么做呢?

你如何讓itemsList成為一個數組而不是一個dict? 似乎你無論如何都將它用作數組。 這樣,你可以做類似的事情

itemsList2 = [weapon for weapon in itemsList if weapon.type == "dagger"]

或者武器類型是否存儲在,例如, character.weaponTypes

itemsList2 = [weapon for weapon in itemsList if weapon.type in character.weaponTypes]

你可以按類創建一個包含可用項目的dict,這樣對於給定的類,你可以得到它可以裝備的ID列表:

classItem = {
          'rogue'   : [1,2,3,12,13,14,15], 
          'mage'    : [13,15,16,18], 
          'soldier' : [1,2,3,4,5,6,7],
         }

然后獲取流氓可用的項目列表,例如:

rogueItems = [v for k,v in itemsList.items() if k in classItem['rogue']]

請注意,使用python2,您必須使用itemsList.iteritems()而不是itemsList.items()

暫無
暫無

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

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