如何在列表中的哈希中搜索特定值?Python
我是一名业余的Python用户,请多多包涵。我创建了一个列表,并用哈希值填充了它。但是我遇到了一些麻烦,因为我需要在整个列表中搜索,找到第一个具有特定值的哈希值并更新它。有没有人知道该怎么做?
character = [{"No": 1, "Name":"Jeff", "Level": 29, "Health": 290},
{"No": 2, "Name":"Bill", "Level": 31, "Health": 310},
{"No": 3, "Name":"EMPTY", "Level": 0, "Health": 0},
{"No": 4, "Name":"EMPTY", "Level": 0, "Health": 0},
{"No": 5, "Name":"EMPTY", "Level": 0, "Health": 0},
{"No": 6, "Name":"EMPTY", "Level": 0, "Health": 0}]
在这段代码中,我需要找到第一个名字为空的哈希值,并用另一个哈希值来更新它。
我尝试使用索引,但没有成功,提示“语法无效”。
x = character.index("EMPTY")
character[x].update(player)
print(character)
3 个回答
0
我建议只把活跃的玩家放进character
列表里,而不是把空的玩家也放进去。这样的话,当新玩家创建时,你可以直接把他们加到这个列表里。
不过,这个方法应该能满足你的需求:
# create a new player. NOTE: "No" is updated when appending to character list
player = {"No": 1, "Name":"Player", "Level": 30, "Health": 300}
# find the character index
idx = 0
for c in character:
if c['Name'] == 'EMPTY':
break
else:
idx += 1
# update player number
player['No'] = idx + 1
# replace element in list
character[idx] = player
0
是的,列表不能直接使用索引方法。应该用线性搜索来找到'Name'等于'Empty'的项。
0
下面是更新第一次出现的内容的方法:
character = [{"No": 1, "Name":"Jeff", "Level": 29, "Health": 290},
{"No": 2, "Name":"Bill", "Level": 31, "Health": 310},
{"No": 3, "Name":"EMPTY", "Level": 0, "Health": 0},
{"No": 4, "Name":"EMPTY", "Level": 0, "Health": 0},
{"No": 5, "Name":"EMPTY", "Level": 0, "Health": 0},
{"No": 6, "Name":"EMPTY", "Level": 0, "Health": 0}]
player = {"No": 7, "Name":"Alex", "Level": 25, "Health": 250}
for character_hash in character:
if character_hash["Name"] == "EMPTY":
character_hash.update(player)
break # Break out of the loop after updating the first empty character
print(character)