如何在列表中的哈希中搜索特定值?Python

1 投票
3 回答
46 浏览
提问于 2025-04-14 16:26

我是一名业余的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)

撰写回答