python - 如何在字典中更新列表中的值?
问题描述
我在字典中有一个列表,如下所示:
d = {first_name + last_name : [first_name, last_name, email, phone_number, birthday]}
我要做的是更新列表中的 first_name 值和键。例如,我的字典可能看起来像这样:
{'johndoe' : ['john', 'doe', 'jd@gmail.com', '911', '01/09']}
我希望能够将名称更新为简或其他:
{'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
推荐阅读
- algorithm - 在二维矩阵中找到最小成本
- c++ - 可变参数模板的 std::conditional
- java - 在多个资源请求的情况下还原更改的最佳实践是什么?
- python - 比较两个数据框并在 Python 中创建比较矩阵?
- python - .loc 在具有相同条件的多个列上
- node.js - 为什么我只在一个帖子路线中出现禁止错误?
- mysql - 失败:Linux MySql 数据库上的 Microsoft.EntityFrameworkCore.Database.Command[20102]
- python - turtle.write() 函数不在海龟窗口中写入
- javascript - 防止并发ajax请求,让他们等待
- javascript - 是否有任何 JavaScript 测试框架在没有 babel 或其他转译器的情况下原生支持 ES6 导入?