【发布时间】:2021-02-01 16:15:16
【问题描述】:
我有一本狗主人字典,我需要编写一个函数update_age() 来更新字典中狗主人的年龄。这是一个例子:
dog_owners = {("John", "Malkovic", 22): ["Fido"],
("Jake", "Smirnoff", 18): ["Butch"],
("Simon", "Ng", 32): ["Zooma", "Rocky"],
("Martha", "Black", 73): ["Chase"]}
所以键是一个元组,其中数字 22、18、32 和 73 代表年龄。
函数 update_age() 有 3 个参数:字典名称、包含 3 个元素的元组、应该从元组中更改数字的数字。
例子:
update_age(dog_owners, ("Jake", "Smirnoff", 18), 22)
dog_owners[("Jake", "Smirnoff", 22)] == ['Butch']
dog_owners.get(("Jake", "Smirnoff", 18)) is None
我尝试过:
def update_age(owners, owner, new_age):
b = (new_age,)
return owner[0:2] + b
但这是不正确的,因为原始密钥仍然具有以前的值,如果我写:
print(update_age(dog_owners, ("Jake", "Smirnoff", 18), 22)) # for check
print(dog_owners.get(("Jake", "Smirnoff", 18)) is None)
答案是
('Jake', 'Smirnoff', 22)
False
所以这意味着我的原始密钥仍然具有以前的值。我怎样才能改变它?可能我应该尝试pop(),然后在键中添加一个新元组,但我不知道怎么做。
【问题讨论】:
-
这能回答你的问题吗? Change the name of a key in dictionary
-
您不能更改字典的键,您只能删除现有的键、值对并用新的替换它们——有几种方法可以做到这一点。这与元组不可变这一事实无关,因此您目前接受的答案在这方面是不正确的。
标签: python python-3.x dictionary tuples key