Ich schaute durch this post versuchte herauszufinden, wenn eine bestimmte Zeichenfolge einen bestimmten Wert in einem Wörterbuch entspricht, aber es wirft nichts zurück. Ich habe ein Wörterbuch mit Wörterbüchern und ich versuche herauszufinden, wie ich, sagen wir, wenn eine Zeichenfolge gegeben 'warrior'
, durch das Wörterbuch, gehen Sie in das Unterwörterbuch, überprüfen Sie die name
Schlüssel für die angegebene Zeichenfolge, und wenn es existiert , gib die Klasse zurück. Das ist mein Code.Python Iterieren durch Wörterbuch, bestimmen, ob die angegebene Zeichenfolge mit einem beliebigen Namen übereinstimmt
classes.py
#import playerstats
from player import playerStats
def setClass(chosenClass):
chosenClass = chosenClass.upper()
#function from post
"""print ([key
for key, value in classes.items()
if value == chosenClass])"""
#this returns nothing
for key, value in classes.items():
if value == chosenClass:
print(classes[chosenClass][value])
#also returns nothing
for i in classes:
if classes[i]["name"] == chosenClass:
print('true')
#create classes
classes = {
'WARRIOR': {
#define name of class for reference
'name': 'Warrior',
#define description of class for reference
'description': 'You were born a protector. You grew up to bear a one-handed weapon and shield, born to prevent harm to others. A warrior is great with health, armor, and defense.',
#define what the class can equip
'gearWeight': ['Cloth', 'Leather', 'Mail', 'Plate'],
#define stat modifiers
'stats': {
#increase, decrease, or leave alone stats from default
'maxHealth': playerStats['maxHealth'],
'stamina': playerStats['stamina'] * 1.25,
'resil': playerStats['resil'] * 1.25,
'armor': playerStats['armor'] * 1.35,
'strength': playerStats['strength'] * 0.60,
'agility': playerStats['agility'],
'criticalChance': playerStats['criticalChance'],
'spellPower': playerStats['spellPower'] * 0.40,
}
}
}
player.py
import random
import classes
#set starter gold variable
startGold = random.randint(25,215)*2.5
#begin player data for new slate
playerStats = {
'currentHealth': int(100),
'maxHealth': int(100),
'stamina': int(10),
'resil': int(2),
'armor': int(20),
'strength': int(15),
'agility': int(10),
'criticalChance': int(25),
'spellPower': int(15),
#set gold as random gold determined from before
'gold': startGold,
'name': {'first': 'New', 'last': 'Player'},
}
Was kann ich tun, um es durch das Wörterbuch suchen, und wenn chosenClass
ein bestehendes Klasse-Wörterbuch ist, return true oder Rückkehr der Wörterbuch?
Sie Groß chosenclass. Großbuchstaben [i] ["name"] auch. – Neo
Und BTW können Sie auch einfach iterieren über classes.values () – Neo
Warum vermeiden nicht einfach Iterieren und Index nach 'Klassen [Schlüssel]' d. H. "WARRIOR"? –