使用map更新python中的词典列表

使用map更新python中的词典列表,python,dictionary,Python,Dictionary,因此,我有一个如下列表: users = [{'id': 11, 'name': 'First'}, {'id': 22, 'name': 'Second'}, {'id':33, 'name': 'Third'}] updated_users = list(map(update, users)) def update(id): if user['id'] == id: new_user = some_fun() user = new_user

因此,我有一个如下列表:

users = [{'id': 11, 'name': 'First'}, {'id': 22, 'name': 'Second'}, {'id':33, 'name': 'Third'}] 
updated_users = list(map(update, users))
def update(id):
    if user['id'] == id:
        new_user = some_fun()
        user = new_user
        return user
我想做的是通过传递id、创建新用户并用新用户替换旧用户来更新用户名。 我想获得更新用户列表,如下所示:

users = [{'id': 11, 'name': 'First'}, {'id': 22, 'name': 'Second'}, {'id':33, 'name': 'Third'}] 
updated_users = list(map(update, users))
def update(id):
    if user['id'] == id:
        new_user = some_fun()
        user = new_user
        return user
如果我可以将id作为参数发送到update func,我想做的事情如下所示:

users = [{'id': 11, 'name': 'First'}, {'id': 22, 'name': 'Second'}, {'id':33, 'name': 'Third'}] 
updated_users = list(map(update, users))
def update(id):
    if user['id'] == id:
        new_user = some_fun()
        user = new_user
        return user

我的更新功能应该是什么样子的?

我不知道您为什么要使用map,我认为这是一种错误的方法,因为map不适用于这类事情(您可以确保它工作正常,但这不是最好的方法)

你可以这样做:

users = [{'id': 11, 'name': 'First'}, {'id': 22, 'name': 'Second'}, {'id':33, 'name': 'Third'}]

def update(id, new_name):
    for user in users:
        if user["id"] == id:
            user["name"] = new_name
            return
    users.append({'id':id,'name':new_name}) # if not exist add user

print(users)
update(11,"Last")
update(1, "New_First")
print(users)
输出:

[{'id': 11, 'name': 'First'}, {'id': 22, 'name': 'Second'}, {'id': 33, 'name': 'Third'}]
[{'id': 11, 'name': 'Last'}, {'id': 22, 'name': 'Second'}, {'id': 33, 'name': 'Third'}, {'id': 1, 'name': 'New_First'}]

您如何知道“已更新”的用户?是的,我知道map通过参数将用户发送到update(),但我如何选择要编辑的用户?为什么使用map?为什么更新函数不能只获取一个ID和一个用户列表,然后枚举用户列表并更新匹配的用户