属性错误:"str"对象在用于更新嵌套字典的递归函数中没有属性"items"



我遇到了一个程序,应该从用户输入的值更新字典键。我一直得到这个错误:

AttributeError: 'str' object has no attribute 'items'

下面是我的代码:

chIndexAbilDict  = {
"Strength":0,"Dexterity":0,"Constitution":0,"Intelligence":0,"Wisdom":0,"Charisma":0
}
chIndexDict = {
"abilityScores":chIndexAbilDict,"proficiencyScore": 0, "Character Level": 0
}
def characterSheet():
global chIndexDict
global chIndexAbilDict
chIndexDictHash = copy.deepcopy(chIndexDict)
chIndexAbilDictHash = copy.deepcopy(chIndexAbilDict)
def statInput(stat, targetDict):
statValue = pyip.inputInt(prompt="What is your " + str(stat) + "?n")
targetDict[stat] = statValue

def dictUpdateValues(targetDict):
for statKey, statValue in targetDict.items():
if type(statValue) is dict:
for k in dictUpdateValues(statKey):
statInput(k, chIndexAbilDictHash)
else:    
statInput(statKey, chIndexDictHash)

dictUpdateValues(chIndexDictHash)
chIndexAbilDict = chIndexAbilDictHash
chIndexDict = chIndexDictHash
characterSheet()

我一直在尝试迭代和编辑所显示的嵌套字典的值时遇到问题,这是目前的问题。我应该怎么做才能解决这个问题?有更简单的方法吗?

似乎在函数

def dictUpdateValues(targetDict):
for statKey, statValue in targetDict.items():
if type(statValue) is dict:
for k in dictUpdateValues(statKey):
statInput(k, chIndexAbilDictHash)
else:    
statInput(statKey, chIndexDictHash)

statKey传递的是一个字符串当targetDict为字符串时,函数期望得到一个字典并调用targetDict.items()

当你调用这个函数" dictupdatevalvalues (chIndexDictHash)">

时,你需要检查字典是否正在传递。Python说"chIndexDictHash"不再是字典,而是字符串(str)。Python没有".items()"字符串(str)上的函数。检查一下deepcopy是否做了它需要做的事情因为你说了" chindexdicthash "是"chindexdict"的深度拷贝然后传递&;chindexdicthash &;作为"目标"参数。我认为当你深度拷贝它时似乎有一个问题。只需打印并检查是否有更改。

相关内容

  • 没有找到相关文章

最新更新