首页 > 解决方案 > 如何在字典中更新列表中的值?

问题描述

我在字典中有一个列表,如下所示:

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() 方法,但我不知道如何使用它来更改值的特定索引。我也相信我遇到了问题,因为我试图更改字典的键和值中的变量。

任何帮助将不胜感激!

标签: pythonpython-3.xlistdictionary

解决方案


  1. 获取原始记录
  2. 从字典中删除
  3. 更新名字(记录中的第一个字段)
  4. 根据新键将其插入字典

您可能需要首先确保新密钥不会覆盖现有记录。

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

推荐阅读