[英]How do I update a value in a list, within a dictionary?
我在字典中有一个列表,如下所示:
d = {first_name + last_name : [first_name, last_name, email, phone_number, birthday]}
我想要做的是更新列表和键中的 first_name 值。 例如,我的字典可能是这样的:
{'johndoe' : ['john', 'doe', 'jd@gmail.com', '911', '01/09']}
我希望能够将名称更新为 jane 或其他名称:
{'janedoe' : ['jane', 'doe', 'jd@gmail.com', '911', '01/09']}
我在尝试什么:
def update_first_name(d, first_name, last_name, new_field_value):
d[first_name + last_name][0] == new_field_value
return d
我也尝试过使用 update() 方法,但我不知道如何使用它来更改值的特定索引。 我也相信我遇到了问题,因为我试图更改字典的键和值中的变量。
任何帮助将不胜感激!
您可能首先要确保新密钥不会覆盖现有记录。
def update_first_name(d, first_name, last_name, new_field_value):
record = d[first_name + last_name]
del d[first_name + last_name]
record[0] = new_field_value
d[new_field_value + last_name] = record
return d
为清楚起见,以上内容按原样编写。 正如@DavidGarcierFer 和@CenkBircanoglu 所提到的,您可以使用pop
返回记录并一步删除它。 此外,如果记录不存在,您可以提供默认值(例如None
)。
def update_first_name(d, first_name, last_name, new_field_value):
record = d.pop(first_name + last_name, None)
if not record:
return d # Or handle case of missing key, e.g. raise ValueError.
record[0] = new_field_value
d[new_field_value + last_name] = record
return d
不能修改密钥。 您必须从字典中删除前一项并将修改后的项添加到其中。
你能试试这个吗?
>>> d = {'johndoe' : ['john', 'doe', 'jd@gmail.com', '911', '01/09']}
>>>
>>> def update_first_name(d, first_name, last_name, new_field_value):
... d[new_field_value+last_name] = d.pop(first_name + last_name)
... d[new_field_value+last_name][0] = new_field_value
... return d
...
>>> update_first_name(d, 'john', 'doe', 'jane')
{'janedoe': ['jane', 'doe', 'jd@gmail.com', '911', '01/09']}
使用==
运算符返回一个布尔值。 您应该使用=
分配一个值。
d[first_name + last_name][0] = new_field_value
然后,如果你想重命名字典的键,你可以使用.pop()
(请参阅重命名字典键):
def update_first_name(d, first_name, last_name, new_field_value):
d[first_name + last_name][0] == new_field_value
d[new_field_value + last_name] = d.pop(first_name + last_name)
return d
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.