2016-09-17 123 views
1

我試圖讓我的遊戲中的武器專屬於某些類。我在表格中的項目數據庫:如何使用新密鑰將一個字典中的值複製到另一個字典中?

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]) 

而且只是覆蓋每一個新值字典。我如何去做這件事?

+0

你不是實際提供*「新鑰匙」 * - 試'character.canEquipWeapon.update({「什麼」: itemsList [5]})' – jonrsharpe

回答

0

您可以創建與類可用物品的字典,因此,對於給定類,你有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()

+1

我喜歡這個答案,但我測試了rogueItems,它給了我一個無效的語法錯誤。我甚至導入iteritems。有沒有辦法在rogueItems中調用特定的項目? – Dragoonknight

+0

你的python版本是什麼? –

+1

我使用的版本是2.7.6,Cloud9 IDE – Dragoonknight

0

你覺得itemsList是一個數組而不是字典?好像你無論如何都是以數組的形式使用它。這樣一來,你可以不喜歡

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

,或者武器類型存儲在,比方說,character.weaponTypes

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

它作爲一個數組的樣子是什麼樣的? – Dragoonknight

+0

'itemsList = [{「name」:「dagger」,....,「class」:「light」},{「name」:「dagger +1」...},...]' –

+0

只有問題,我與這種風格是該項目沒有關聯的ID號碼。 – Dragoonknight

相關問題