Python 为什么会说不可损坏类型:';列表';即使它是一根绳子?
但是我收到了错误Python 为什么会说不可损坏类型:';列表';即使它是一根绳子?,python,Python,但是我收到了错误 game_locs = ['a1', 'a2', 'a3', 'a4', 'b1', 'b2', 'b3', 'b4'] ZONENAME = ['Town Market', 'Town Entrance', 'Town Square', 'Town Hall', "", 'Home', "", "", ""] DESCRIPTION = 'description' EXAMINATION = 'examine' SOLVED = False UP = 'up', 'north
game_locs = ['a1', 'a2', 'a3', 'a4', 'b1', 'b2', 'b3', 'b4']
ZONENAME = ['Town Market', 'Town Entrance', 'Town Square', 'Town Hall', "", 'Home', "", "", ""]
DESCRIPTION = 'description'
EXAMINATION = 'examine'
SOLVED = False
UP = 'up', 'north'
DOWN = 'down', 'south'
LEFT = 'left', 'west'
RIGHT = 'right', 'east'
zonemap = {}
for i in range(len(game_locs)):
x = game_locs[i]
if x[0] == 'a':
if x[1] == '1':
zonemap.update({'a1': {
ZONENAME: ZONENAME[i],
DESCRIPTION: "description",
EXAMINATION: "examine",
SOLVED: False,
UP: "You cannot move up from here",
DOWN: game_locs[i + 4],
LEFT: "You cannot move left from here",
RIGHT: game_locs[i + 1]
}})
elif x[1] == '4':
zonemap.update({'a4': {
ZONENAME: ZONENAME[i],
DESCRIPTION: "description",
EXAMINATION: "examine",
SOLVED: False,
UP: "You cannot move up from here",
DOWN: game_locs[i + 4],
LEFT: game_locs[i - 1],
RIGHT: "You cannot move right from here"}
})
else:
zonemap.update({f'a{indx}': {
ZONENAME: ZONENAME[i],
DESCRIPTION: "description",
EXAMINATION: "examine",
SOLVED: False,
UP: "You cannot move up from here",
DOWN: game_locs[i + 4],
LEFT: game_locs[i - 1],
RIGHT: game_locs[i + 1]}
})
elif x[0] == 'b':
if x[1] == '1':
zonemap.update({'b1': {
ZONENAME: ZONENAME[i],
DESCRIPTION: "description",
EXAMINATION: "examine",
SOLVED: False,
UP: game_locs[i - 4],
DOWN: game_locs[i + 4],
LEFT: "You cannot move left from here",
RIGHT: game_locs[i + 1]}
})
elif x[1] == '4':
zonemap.update({'b4': {
ZONENAME: ZONENAME[i],
DESCRIPTION: "description",
EXAMINATION: "examine",
SOLVED: False,
UP: game_locs[i - 4],
DOWN: game_locs[i + 4],
LEFT: game_locs[i - 1],
RIGHT: "You cannot move right from here"}
})
else:
zonemap.update({f'b{indx}': {
ZONENAME: ZONENAME[i],
DESCRIPTION: "description",
EXAMINATION: "examine",
SOLVED: False,
UP: game_locs[i - 4],
DOWN: game_locs[i + 4],
LEFT: game_locs[i - 1],
RIGHT: game_locs[i + 1]}
})
这是什么原因?”a1'显然是一个字符串,键是一个字典而不是一个列表,那么我出现这个错误的原因是什么?我正在使用PyCharm测试代码,并使用Python 3.8。字典绝对是可以散列的,对吗?所以我不明白为什么会这样。上下文:基于txt的RPG游戏
错误给出了错误的大致位置,但由于它是一个多行语句,因此错误实际上位于嵌套目录的下一行。ZONENAME
是一个列表,列表不能用作键
要解决此问题,请不要将常量用作键。将其名称用作键:引用名称
zonemap.update({'a1': {
ZONENAME: ZONENAME[i],
...
})
ZONENAME = ['Town Market', 'Town Entrance', 'Town Square', 'Town Hall', "", 'Home', "", "", ""]
zonemap.update({'a1': {
ZONENAME: ZONENAME[i],
...
})
zonemap.update({'a1': {
'ZONENAME': ZONENAME[i],
'DESCRIPTION': "description",
'EXAMINATION': "examine",
'SOLVED': False,
'UP': "You cannot move up from here",
'DOWN': game_locs[i + 4],
'LEFT': "You cannot move left from here",
'RIGHT': game_locs[i + 1]
}})